StringBuilder 删除最后一条记录末尾的逗号
StringBuilder remove comma at the end of Last record
我正在使用 StringBuilder 在记录之间显示逗号,但也在最后一条记录的末尾添加逗号
如何控制这个?我不喜欢在最后一条记录的末尾看到逗号 - 因为它没用
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();
为最后一项添加检查。
if (i < arrayList.size() - 1) {
stringBuilder.append(" - "+price+",");
} else {
stringBuilder.append(" - "+price);
}
或:
stringBuilder.append(" - "+price);
if (i < arrayList.size() - 1) {
stringBuilder.append(",");
}
或者循环直到 size - 1,然后在 wards 后面添加最后一个元素,不带逗号。
int i = 0, price = 0;
String name = null;
for (i = 0; i < arrayList.size() - 1; i++) {
name = arrayList.get(i).getName();
price = arrayList.get(i).getPrice();
stringBuilder.append(strName);
stringBuilder.append(" - "+price+",");
}
name = arrayList.get(i).getName();
price = arrayList.get(i).getPrice();
stringBuilder.append(strName);
stringBuilder.append(" - "+price);
stringFinal = stringBuilder.toString();
for (int i = 0; i < arrayList.size(); i++) {
String name = arrayList.get(i).getName();
int price = arrayList.get(i).getPrice();
stringBuilder.append(strName);
if(i== arrayList.size()-1)
stringBuilder.append(" - "+price);
else
stringBuilder.append(" - "+price+",");
}
stringFinal = stringBuilder.toString();
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();
您可以利用 Stream
API(感谢@Sasha)使它更干净:
String joinedString = String.join(",", list.stream().map(
e -> e.getName() + " - " + e.getPrice()).collect(Collectors.toList()));
你可以把它写在前面,而不是放在最后:-
String name = arrayList.get(0).getName();
int price = arrayList.get(0).getPrice();
stringBuilder.append(strName).append(" - "+price);
for (int i = 1; i < arrayList.size(); i++) {
name = arrayList.get(i).getName();
price = arrayList.get(i).getPrice();
stringBuilder.append(","+strName).append(" - "+price);
}
stringFinal = stringBuilder.toString();
您可以只删除最后一个字符:
stringBuilder.deleteCharAt(stringBuilder.length()-1);
stringFinal = stringBuilder.toString();
这将是最简单的解决方案。
int index = stringBuilder.lastIndexOf(",");
if (index != -1){
stringBuilder.replace(index, index+1, "");
}
String stringFinal = stringBuilder.toString();
我正在使用 StringBuilder 在记录之间显示逗号,但也在最后一条记录的末尾添加逗号
如何控制这个?我不喜欢在最后一条记录的末尾看到逗号 - 因为它没用
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();
为最后一项添加检查。
if (i < arrayList.size() - 1) {
stringBuilder.append(" - "+price+",");
} else {
stringBuilder.append(" - "+price);
}
或:
stringBuilder.append(" - "+price);
if (i < arrayList.size() - 1) {
stringBuilder.append(",");
}
或者循环直到 size - 1,然后在 wards 后面添加最后一个元素,不带逗号。
int i = 0, price = 0;
String name = null;
for (i = 0; i < arrayList.size() - 1; i++) {
name = arrayList.get(i).getName();
price = arrayList.get(i).getPrice();
stringBuilder.append(strName);
stringBuilder.append(" - "+price+",");
}
name = arrayList.get(i).getName();
price = arrayList.get(i).getPrice();
stringBuilder.append(strName);
stringBuilder.append(" - "+price);
stringFinal = stringBuilder.toString();
for (int i = 0; i < arrayList.size(); i++) {
String name = arrayList.get(i).getName();
int price = arrayList.get(i).getPrice();
stringBuilder.append(strName);
if(i== arrayList.size()-1)
stringBuilder.append(" - "+price);
else
stringBuilder.append(" - "+price+",");
}
stringFinal = stringBuilder.toString();
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();
您可以利用 Stream
API(感谢@Sasha)使它更干净:
String joinedString = String.join(",", list.stream().map(
e -> e.getName() + " - " + e.getPrice()).collect(Collectors.toList()));
你可以把它写在前面,而不是放在最后:-
String name = arrayList.get(0).getName();
int price = arrayList.get(0).getPrice();
stringBuilder.append(strName).append(" - "+price);
for (int i = 1; i < arrayList.size(); i++) {
name = arrayList.get(i).getName();
price = arrayList.get(i).getPrice();
stringBuilder.append(","+strName).append(" - "+price);
}
stringFinal = stringBuilder.toString();
您可以只删除最后一个字符:
stringBuilder.deleteCharAt(stringBuilder.length()-1);
stringFinal = stringBuilder.toString();
这将是最简单的解决方案。
int index = stringBuilder.lastIndexOf(",");
if (index != -1){
stringBuilder.replace(index, index+1, "");
}
String stringFinal = stringBuilder.toString();