Java数组的函数是否类似于PHP中的join()函数?

270

我想用一个粘合字符串(glue string)连接一个String[]数组,有没有相关的函数可以实现这个目的?


7
Java 8已经默认包含了这个功能。我建议读者滚动查看@Marek Gregor的答案(并点赞...)。 - stav
可能是[A quick and easy way to join array elements with a separator (the opposite of split) in Java]的重复问题。(https://dev59.com/q3I-5IYBdhLWcg3wMFMf) - Anderson Green
24个回答

0
从 "str1"、"str2"、"" 中获取 "str1, str2":
Stream.of("str1", "str2", "").filter(str -> !str.isEmpty()).collect(Collectors.joining(", ")); 

另外,您可以添加额外的空值检查


-1
我使用 StringBuilder 来实现这个功能:
public static String join(String[] source, String delimiter) {
    if ((null == source) || (source.length < 1)) {
        return "";
    }

    StringBuilder stringbuilder = new StringBuilder();
    for (String s : source) {
        stringbuilder.append(s + delimiter);
    }
    return stringbuilder.toString();
} // join((String[], String)

1
s + delimiter(使用加号运算符进行字符串连接)完全违背了使用 StringBuilder 的初衷。 - quietmint
此外,这种方法意味着一个带有分隔符“:”的数组,例如{"foo", "bar"},将被转换为"foo:bar:"。 - pioto

-2
我通常使用一种简单的速记技巧...
String op = new String;
for (int i : is) 
{
    op += candidatesArr[i-1]+",";
}
op = op.substring(0, op.length()-1);

这仅适用于长度为1的分隔符,并且如果您想要不同长度的分隔符,则需要“魔数”(尽管相当局部)。 - maiwald
在追加时,您可以添加多个字符。 - Gaurav Adurkar
那么就这样做吧:op = op.substring(0, op.length() - ",".length()); 这有什么大不了的? - Dennis

-3
Java.util.Arrays类有一个“asList”方法。与java.util.List/ArrayList API一起使用,可以提供你所需的所有功能:;
private static String[] join(String[] array1, String[] array2) {

    List<String> list = new ArrayList<String>(Arrays.asList(array1));
    list.addAll(Arrays.asList(array2));
    return list.toArray(new String[0]);
}

7
问题是如何使用分隔符连接字符串数组,而不是如何将两个字符串数组连接在一起。 - user23987

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接