我想加入一个字符串[]与胶水字符串。有这个函数吗?


当前回答

谷歌番石榴的库也有这种能力。你也可以从API中看到String[]的例子。

正如api中已经描述的,要注意构建器方法的不可变性。

它可以接受一个对象数组,所以它在你的情况下是可行的。在我以前的经验中,我尝试加入一个堆栈,这是一个可迭代的,它工作得很好。

我的例子:

Deque<String> nameStack = new ArrayDeque<>();
nameStack.push("a coder");
nameStack.push("i am");
System.out.println("|" + Joiner.on(' ').skipNulls().join(nameStack) + "|");

打印出来:|我是一个编码员|

其他回答

如果您正在寻找一个快速的数组到字符串转换,请尝试Arrays.toString()。

创建传递对象[]的String表示形式。结果是 用括号括起来(“[]”),每个元素都被转换为一个String 通过String.valueOf(Object)并以“,”分隔。如果数组是 Null,则返回" Null "。

考虑到:

String[] a = new String[] { "Hello", "World", "!" };

然后,作为coobird的答案的替代方案,胶水是“,”:

Arrays.asList(a).toString().replaceAll("^\\[|\\]$", "")

或者连接不同的字符串,例如“&".

Arrays.asList(a).toString().replaceAll(", ", " &amp; ").replaceAll("^\\[|\\]$", "")

然而……只有当你知道数组或列表中的值不包含字符串“,”时,这个方法才有效。

我使用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)

谷歌番石榴的库也有这种能力。你也可以从API中看到String[]的例子。

正如api中已经描述的,要注意构建器方法的不可变性。

它可以接受一个对象数组,所以它在你的情况下是可行的。在我以前的经验中,我尝试加入一个堆栈,这是一个可迭代的,它工作得很好。

我的例子:

Deque<String> nameStack = new ArrayDeque<>();
nameStack.push("a coder");
nameStack.push("i am");
System.out.println("|" + Joiner.on(' ').skipNulls().join(nameStack) + "|");

打印出来:|我是一个编码员|

就像最近的许多问题一样,Java 8来拯救:


Java 8在Java .lang. string中添加了一个新的静态方法,它的功能正是你想要的:

public static String join(CharSequence delimeter, CharSequence... elements);

使用它:

String s = String.join(", ", new String[] {"Hello", "World", "!"});

结果:

"Hello, World, !"