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


当前回答

用一个小mod代替substring():

//join(String array,delimiter)
public static String join(String r[],String d)
{
        if (r.length == 0) return "";
        StringBuilder sb = new StringBuilder();
        int i;
        for(i=0;i<r.length-1;i++){
            sb.append(r[i]);
            sb.append(d);
        }
        sb.append(r[i]);
        return sb.toString();
}

其他回答

arrays有一个“asList”方法。与java.util一起使用。列表/数组列表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]);
}

我就是这么做的。

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

如果你正在使用Spring框架,那么你有StringUtils类:

import static org.springframework.util.StringUtils.arrayToDelimitedString;

arrayToDelimitedString(new String[] {"A", "B", "C"}, "\n");

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

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

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

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

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

我的例子:

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

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