Java中有没有与Python的str.join直接对应的功能?

34 投票
5 回答
15561 浏览
提问于 2025-04-16 01:13

可能的重复问题:
在Java中构建带分隔符的字符串的最佳方法是什么?
Java:将List<String>转换为连接的字符串

在Java中,如果你有一个集合,想要获取迭代器,然后单独处理第一个(或最后一个)元素和其他元素,以便得到一个用逗号分隔的字符串,这样的做法似乎有点无聊。有没有类似于Python中的str.join的方法呢?

为了避免这个问题被关闭为重复问题,我想说明一下:我不想使用像Apache Commons这样的外部库。

谢谢!

几年后更新...

Java 8给我们带来了救星

5 个回答

9

标准库里没有这个功能,但比如说,Guava库里有一个叫Joiner的工具可以做到这一点。

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

不过,你也可以自己写一个,使用StringBuilder就可以了。

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

很长一段时间,Java都没有提供这样的功能。和很多人一样,我自己也写过一些方法来处理字符串数组和集合(迭代器)的连接。

不过在Java 8中,新增了一个叫做 String.join() 的方法:

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

撰写回答