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


当前回答

在Java 8中你可以使用

1)流API:

String[] a = new String[] {"a", "b", "c"};
String result = Arrays.stream(a).collect(Collectors.joining(", "));

2) new String。加入方式:https://stackoverflow.com/a/21756398/466677

3) java.util.StringJoiner类:http://docs.oracle.com/javase/8/docs/api/java/util/StringJoiner.html

其他回答

我就是这么做的。

private String join(String[] input, String delimiter)
{
    StringBuilder sb = new StringBuilder();
    for(String value : input)
    {
        sb.append(value);
        sb.append(delimiter);
    }
    int length = sb.length();
    if(length > 0)
    {
        // Remove the extra delimiter
        sb.setLength(length - delimiter.length());
    }
    return sb.toString();
}

类似的替代方案

/**
 * @param delimiter 
 * @param inStr
 * @return String
 */
public static String join(String delimiter, String... inStr)
{
    StringBuilder sb = new StringBuilder();
    if (inStr.length > 0)
    {
        sb.append(inStr[0]);
        for (int i = 1; i < inStr.length; i++)
        {
            sb.append(delimiter);                   
            sb.append(inStr[i]);
        }
    }
    return sb.toString();
}

你喜欢我只用String类方法的3行方式吗?

static String join(String glue, String[] array) {
    String line = "";
    for (String s : array) line += s + glue;
    return (array.length == 0) ? line : line.substring(0, line.length() - glue.length());
}

谷歌番石榴的库也有这种能力。你也可以从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 "。