如何删除字符串中的额外逗号?

时间:2015-10-15 06:29:01

标签: java arrays string list

这是我的代码,用于存储在字符串中并从列表中读取:

ArrayList<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");

String listString = "";

for (String s : list)
{
    listString += s + ", ";
}

System.out.println(listString);

最后添加额外的逗号,如何删除最小行数并执行代码。请帮忙!

7 个答案:

答案 0 :(得分:3)

Java 8有一个很好的新StringJoiner类,它就是为此而制作的......

ArrayList<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");

String listString = "";
StringJoiner sj = new StringJoiner(", ");
for (String s : list) {
    sj.add(s);
}
listString = sj.toString();
System.out.println(listString);

哪个输出

one, two, three

如果你没有幸运地使用Java 8(我感到很痛苦),那么你可以使用StringBuilder并简单地删除最后两个字符,比如......

ArrayList<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");

String listString = "";
StringBuilder sb = new StringBuilder(64);
for (String s : list) {
    sb.append(s).append(", ");
}
listString = sb.delete(sb.length() - 2, sb.length()).toString();
System.out.println(listString);

现在,显然,您应该在执行删除之前检查生成的StringBuilder的长度是否足够长(有内容),但我会将其留给您;)

答案 1 :(得分:3)

试试这个:

ArrayList<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");

System.out.println(list.toString().replaceAll("\\]|\\[", ""));

输出:

one, two, three

答案 2 :(得分:2)

作为StringJoiner和其他类的替代,您也可以使用第一个元素初始化listString,在下一个元素之前添加逗号并在索引1处开始迭代。您只能'再使用foreach了。

ArrayList<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");
String listString = list.get(0);

for (int i = 1;i<list.size();++i) {
    listString += ", " + list.get(i);
}

System.out.println(listString);

答案 3 :(得分:1)

这有效:

listString = listString.substring(0, listString.length() - 2);
System.out.println(listString);

答案 4 :(得分:0)

ArrayList<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");

String listString = "";

for (String s : list)
{
  listString += ", " + s;
}

System.out.println(listString.replaceFirst(",",""));

您可以使用上述代码。在开始时附加逗号,然后用空白字符串替换第一个逗号。

答案 5 :(得分:0)

这是一个简单的解决方案。

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

希望它有效。

答案 6 :(得分:0)

先前的Java 8:

StringBuilder listString = new StringBuilder();
 for (String id : list){
       listString.append(id).append(",");
 }
String result =listString.toString().replaceAll(",$", "");

正则表达式",$"将检测最后一个逗号。

使用Java 8:

list.stream().collect(Collectors.joining(","));