Java的str.join在Java中有直接的等价物吗?

时间:2010-07-13 10:29:54

标签: java python string

  

可能重复:
  What’s the best way to build a string of delimited items in Java?
  Java: convert List<String> to a join()d string

在Java中,给定一个集合,获取迭代器并为第一个(或最后一个)元素执行单独的大小写,其余的以获取逗号分隔的字符串看起来相当枯燥,在Python中有类似str.join的内容?

进一步澄清以避免它被重复关闭:我宁愿不使用像Apache Commons这样的外部库。

谢谢!

几年后更新......

Java 8 came to the rescue

5 个答案:

答案 0 :(得分:15)

没有。这是我的尝试:

/**
 * Join a collection of strings and add commas as delimiters.
 * @require words.size() > 0 && words != null
 */
public static String concatWithCommas(Collection<String> words) {
    StringBuilder wordList = new StringBuilder();
    for (String word : words) {
        wordList.append(word + ",");
    }
    return new String(wordList.deleteCharAt(wordList.length() - 1));
}

答案 1 :(得分:8)

标准库中没有任何内容,但例如Guava有Joiner这样做。

Joiner joiner = Joiner.on(";").skipNulls();
. . .
return joiner.join("Harry", null, "Ron", "Hermione");
// returns "Harry; Ron; Hermione"

但是,您总是可以使用StringBuilder编写自己的。

答案 2 :(得分:4)

没有。没有这样的方法。像许多其他人一样,我为字符串和集合(迭代器)数组做了我的版本的连接。

答案 3 :(得分:3)

在不编写额外的“utils”代码和不使用我发现的外部库之间的折衷解决方案是以下双线

/* collection is an object that formats to something like "[1, 2, 3...]"
  (as the case of ArrayList, Set, etc.)
  That is part of the contract of the Collection interface.
*/
String res = collection.toString();
res = res.substring(1, res.length()-1);

答案 4 :(得分:0)

不在标准库中。它位于StringUtilscommons lang