如何去除字符串末尾的逗号?

31
我希望在字符串末尾有逗号的情况下删除逗号。
例如:

String names = "A,B,C,"

如果字符串以“,”结尾,则需要删除最后一个逗号。
6个回答

87
你可以尝试使用正则表达式:
names = names.replaceAll(",$", "");

或者是一个简单的子字符串:

if (names.endsWith(",")) {
  names = names.substring(0, names.length() - 1);
}

1
你能解释一下这里的正则表达式是如何工作的吗? - Snehal Masne
2
在正则表达式中使用 $ 无法去除逗号,但仅使用“,”就可以。 - Amit Tumkur
1
@amit Tumkur $ 表示字符串的结尾,因此它只会在末尾删除逗号。 - teksan
1
@AmitTumkur 这个问题特别指出了需要删除字符串末尾的逗号,这就是为什么正则表达式中有一个 $ 来锚定匹配到字符串的末尾。如果你想要删除字符串中所有的逗号,那么显然你就不需要 $ 了。 - David Webb

19
if (names.endsWith(",")) {
    names = names.substring(0, names.length()-1);
}

3
int last = names.length() - 1;
if (last > 0 && names.charAt(last) == ',') {
    names = names.substring(0, last);
}

2

如果您不想重复造轮子:

StringUtils.stripEnd(names, ",");

如果您只想去掉一个逗号,但是有多个逗号,例如s,th,,,那么这种方法将无法奏效。 - pstobiecki

0
你可以使用“Java 8”这样做。
private static void appendNamesWithComma() {
    List<String> namesList = Arrays.asList("test1", "tester2", "testers3", "t4");
    System.out.println(namesList.stream()
                                .collect(Collectors.joining(", ")));

}

0
StringBuilder stringBuilder = new StringBuilder();

for (...) {
    ....
}

int lastSeparator = stringBuilder.lastIndexOf("\n");

if (lastSeparator != -1) {
    stringBuilder.delete(lastSeparator, lastSeparator + 2);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接