【问题标题】:How to remove extra commas in my string?如何删除我的字符串中多余的逗号?
【发布时间】:2015-10-15 06:29:01
【问题描述】:

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

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);

它在末尾添加了额外的逗号,我怎样才能删除并以最少的行数执行代码。请帮忙!

【问题讨论】:

标签: java arrays string list


【解决方案1】:

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 的长度是否足够长(有内容),但我会留给您;)

【讨论】:

    【解决方案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】:

      试试这个:

      ArrayList<String> list = new ArrayList<String>();
      list.add("one");
      list.add("two");
      list.add("three");
      
      System.out.println(list.toString().replaceAll("\\]|\\[", ""));
      

      输出:

      one, two, three
      

      【讨论】:

      • System.out.println(list); 也给出相同的输出。
      【解决方案4】:

      这行得通:

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

      【讨论】:

        【解决方案5】:

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

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

        希望它有效。

        【讨论】:

          【解决方案6】:

          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(","));  
          

          【讨论】:

            【解决方案7】:
            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(",",""));
            

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

            【讨论】:

            • 我认为你应该把“,”换成“”否则开头会有多余的空间
            猜你喜欢
            • 1970-01-01
            • 2019-08-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多