StringBuilder删除最后一条记录末尾的逗号

Sun*_*Sun 5 java stringbuilder

我使用StringBuilder在记录之间显示逗号,但在Last Record结束时也使用逗号

如何控制这个?我不喜欢在最后一个记录的末尾看到逗号 - 因为它没用

   for (int i = 0; i < arrayList.size(); i++) {

        String name = arrayList.get(i).getName();
        int price = arrayList.get(i).getPrice();

        stringBuilder.append(strName);
        stringBuilder.append(" - "+price+",");

    }

        stringFinal = stringBuilder.toString();
Run Code Online (Sandbox Code Playgroud)

Fre*_*ula 7

Java 8解决方案

使用Java 8时不需要任何检查.您只需要使用StringJoiner(或String.join()).

StringJoiner joiner = new StringJoiner(",");
for (int i = 0; i < arrayList.size(); i++) {
    String name = arrayList.get(i).getName();
    int price = arrayList.get(i).getPrice();

    joiner.add(strName + " - " + price);
}
String joinedString = joiner.toString();
Run Code Online (Sandbox Code Playgroud)

您可以利用StreamAPI(感谢@Sasha)使其更加清洁:

String joinedString = String.join(",", list.stream().map(
        e -> e.getName() + " - " + e.getPrice()).collect(Collectors.toList()));
Run Code Online (Sandbox Code Playgroud)


Tho*_* R. 4

添加对最后一项的检查。

if (i < arrayList.size() - 1) {
  stringBuilder.append(" - "+price+",");
} else {
  stringBuilder.append(" - "+price);
}
Run Code Online (Sandbox Code Playgroud)

或者:

stringBuilder.append(" - "+price);
if (i < arrayList.size() - 1) {
  stringBuilder.append(",");
}
Run Code Online (Sandbox Code Playgroud)