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


当前回答

使用Apache Commons的StringUtils库的join方法。

String[] stringArray = {"a","b","c"};
StringUtils.join(stringArray, ",");

其他回答

Java 8 +

使用String.join ():

String str = String.join(",", arr);

注意,arr也可以是任何Iterable(比如一个列表),而不仅仅是一个数组。

如果你有一个流,你可以使用连接收集器:

Stream.of("a", "b", "c")
      .collect(Collectors.joining(","))

遗留(Java 7及更早版本)

StringBuilder builder = new StringBuilder();
for(String s : arr) {
    builder.append(s);
}
String str = builder.toString();

或者,如果你只是想要一个“调试风格”的数组转储:

String str = Arrays.toString(arr);

注意,如果你真的是传统的(Java 1.4或更早的版本),你需要用StringBuffer替换那里的StringBuilder。

安卓

使用TextUtils.join ():

String str = TextUtils.join(",", arr);

一般的笔记

您可以根据字符串之间的字符(如果有的话)来修改上面的所有示例。

不要像这里显示的一些答案那样使用字符串并在循环中添加+=。这将使GC飙升,因为创建和丢弃的字符串对象与数组中的项目一样多。对于小型数组,您可能不会真正注意到差异,但对于大型数组,它可能会慢几个数量级。

试试Arrays.deepToString方法。

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

试试数组。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();
}

使用Apache Commons的StringUtils库的join方法。

String[] stringArray = {"a","b","c"};
StringUtils.join(stringArray, ",");

使用Apache commons StringUtils.join()。它接受一个数组作为参数(也有Iterable和Iterator参数的重载),并对每个元素(如果它不为null)调用toString()来获得每个元素的字符串表示形式。然后,每个元素的字符串表示形式被连接成一个字符串,如果指定了分隔符,则中间有分隔符:

String joinedString = StringUtils.join(new Object[]{"a", "b", 1}, "-");
System.out.println(joinedString);

生产:

a-b-1