我需要将字符串数组转换为字符串的Java代码。


当前回答

试试数组。toString重载方法。

否则,试试下面的通用实现:

public static void main(String... args) throws Exception {

    String[] array = {"ABC", "XYZ", "PQR"};

    System.out.println(new Test().join(array, ", "));
}

public <T> String join(T[] array, String cement) {
    StringBuilder builder = new StringBuilder();

    if(array == null || array.length == 0) {
        return null;
    }

    for (T t : array) {
        builder.append(t).append(cement);
    }

    builder.delete(builder.length() - cement.length(), builder.length());

    return builder.toString();
}

其他回答

在Java 8中,我认为最简单的方法是:

    String[] array = { "cat", "mouse" };
    String delimiter = "";
    String result = String.join(delimiter, array);

这样您就可以选择任意的分隔符。

public class ArrayToString
{   
    public static void main(String[] args)
    {
        String[] strArray = new String[]{"Java", "PHP", ".NET", "PERL", "C", "COBOL"};
        
        String newString = Arrays.toString(strArray);
        
        newString = newString.substring(1, newString.length()-1);

        System.out.println("New New String: " + newString);
    }
}

试试Arrays.deepToString方法。

对象的“深层内容”的字符串表示形式 数组中。如果数组包含其他数组作为元素,则字符串 表示法包含它们的内容,等等。这个方法是 用于将多维数组转换为字符串

当我们使用流时,我们有更多的灵活性,比如 将任意数组对象转换为toString 过滤器->删除时,它是空的 join——>添加连接字符

    //Deduplicate the comma character in the input string
    String[] splits = input.split("\\s*,\\s*");
    return Arrays.stream(splits).filter(StringUtils::isNotBlank).collect(Collectors.joining(", "));
String[] strings = new String[25000];
for (int i = 0; i < 25000; i++) strings[i] = '1234567';

String result;
result = "";
for (String s : strings) result += s;
//linear +: 5s

result = "";
for (String s : strings) result = result.concat(s);
//linear .concat: 2.5s

result = String.join("", strings);
//Java 8 .join: 3ms

Public String join(String delimiter, String[] s)
{
    int ls = s.length;
    switch (ls)
    {
        case 0: return "";
        case 1: return s[0];
        case 2: return s[0].concat(delimiter).concat(s[1]);
        default:
            int l1 = ls / 2;
            String[] s1 = Arrays.copyOfRange(s, 0, l1); 
            String[] s2 = Arrays.copyOfRange(s, l1, ls); 
            return join(delimiter, s1).concat(delimiter).concat(join(delimiter, s2));
    }
}
result = join("", strings);
// Divide&Conquer join: 7ms

如果你没有选择,只能使用Java 6或7,那么你应该使用分治连接。