【问题标题】:Join String list elements with a delimiter in one step [duplicate]一步将字符串列表元素与分隔符连接[重复]
【发布时间】:2011-04-30 15:04:08
【问题描述】:

有没有像join这样的函数,将List的数据作为字符串返回 所有元素,由提供的分隔符连接?

 List<String> join; ....
 String join = list.join('+");
 // join == "Elem 1+Elem 2";

还是必须使用迭代器手动粘合元素?

【问题讨论】:

    标签: java


    【解决方案1】:

    你可以使用Apache Commons Lang的StringUtils.join()方法:

    String join = StringUtils.join(joinList, "+");
    

    【讨论】:

    • 当然,如果您不想为此使用第三方库,创建实用程序类也很容易。但是Apache Commons Lang 提供了许多有用的方法,可以处理null 的值...
    【解决方案2】:

    或来自 Google Guava 的 Joiner

    Joiner joiner = Joiner.on("+");
    String join = joiner.join(joinList);
    

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 遗憾的是,String.join() 只接受 Iterable&lt;CharSequence&gt;(可变参数除外),而 Guava 的 Joiner.join() 接受 Iterable&lt;?&gt;Iterator&lt;?&gt;、可变参数...
      • 正确 - String.join() 不处理任意类型。它需要一个可迭代的 CharSequence,即 List。如果要分隔任意类型,则需要提取字符串值并构建分隔列表。这也是 Java 8 中的单行代码:String joined = iterableOfNonCharSequence.stream().map(object -&gt; object.methodToGetStringValue()).collect(Collectors.joining(","));
      • StringJoiner 也是一个用于连接内容的有用类。这是一个显示 StringJoiner 和 Collectors.joining 的示例程序...pastebin.com/i2YwJcZy#
      • 原生java解决方案>全部
      【解决方案4】:

      如果您只想记录元素列表,可以使用 list toString() 方法,该方法已经连接了所有列表元素。

      【讨论】:

        【解决方案5】:

        如果您使用的是 Spring,您可以使用 StringUtils.join() 方法,该方法还允许您指定前缀和后缀。

        String s = StringUtils.collectionToDelimitedString(fieldRoles.keySet(),
                        "\n", "<value>", "</value>");
        

        【讨论】:

        【解决方案6】:

        您可以使用:org.springframework.util.StringUtils;

        String stringDelimitedByComma = StringUtils.collectionToCommaDelimitedString(myList);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-18
          • 2016-03-13
          • 2012-12-22
          • 2019-01-05
          • 2021-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多