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

for*_*ran 25 python java string

可能重复:
在Java中构建一系列分隔项的最佳方法是什么?
Java:将List <String>转换为join()d字符串

在Java中,给定一个集合,获取迭代器并为第一个(或最后一个)元素执行单独的大小写,其余的以获取逗号分隔的字符串看起来相当沉闷,是否有类似于str.joinPython的东西?

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

谢谢!

几年后更新......

Java 8来救援

Bob*_*rbo 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));
}
Run Code Online (Sandbox Code Playgroud)


Mic*_*las 10

很长一段时间,Java 都没有提供这样的方法。像许多其他人一样,我对字符串和集合(迭代器)数组进行了这种连接。

但是 Java 8 添加了String.join()

String[] arr = { "ala", "ma", "kota" };
String joined = String.join(" ", arr);
System.out.println(joined);
Run Code Online (Sandbox Code Playgroud)

  • 使用 Java 8 `String` 有一个静态 `join()` 方法,请参阅此答案:http://stackoverflow.com/a/22577565/1115554 (5认同)

pol*_*nts 8

标准库中没有任何内容,但例如Guava Joiner就是这样做的.

Joiner joiner = Joiner.on(";").skipNulls();
. . .
return joiner.join("Harry", null, "Ron", "Hermione");
// returns "Harry; Ron; Hermione"
Run Code Online (Sandbox Code Playgroud)

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

  • @Petriborg:`java.lang.StringBuilder`是JavaSE,而不是Apache的.我不确定这是否能回答你的问题. (3认同)