将数组中的元素连接到字符串

Leo*_*eo 33 java arrays string converter

我有点困惑.我无法在任何地方找到答案;(

我有一个String数组:

String[] arr = ["1", "2", "3"];
Run Code Online (Sandbox Code Playgroud)

然后我将它转换为字符串:

String str = Arrays.toString(arr);
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)

我期望得到字符串"123",但我得到了字符串"[1,2,3]".

我怎么能在java中做到这一点?我正在使用Eclipse IDE

Nav*_*kar 54

使用StringBuilder而不是StringBuffer,因为它比StringBuffer更快.

示例代码

String[] strArr = {"1", "2", "3"};
StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < strArr.length; i++) {
   strBuilder.append(strArr[i]);
}
String newString = strBuilder.toString();
Run Code Online (Sandbox Code Playgroud)

这就是为什么这是使用字符串连接的更好解决方案:当您连接2个字符串时,会创建一个新的字符串对象并执行逐字符复制.
有效地意味着代码复杂性将是数组大小平方的顺序!

(1+2+3+ ... n这是每次迭代复制的字符数). 在这种情况下,StringBuilder只会执行"复制到字符串"一次,从而降低了复杂性O(n).

  • 使用StringBuilder而不是StringBuffer.StringBuffer是线程安全的,在此示例中不需要. (11认同)

Ach*_*Jha 16

Arrays.toString(arr);
Run Code Online (Sandbox Code Playgroud)

输出为[1,2,3]并将其存储到字符串中.然后打印它以获得输出[1,2,3].

如果你想获得输出123试试这个:

public static void main(String[] args) {
    String[] arr= {"1","2","3"};
    String output ="";
    for(String str: arr)
        output=output+str;
    System.out.println(output);


}
Run Code Online (Sandbox Code Playgroud)

输出:

123
Run Code Online (Sandbox Code Playgroud)

  • 请不要连接字符串,使用StringBuilder/Buffer或任何适当的. (13认同)
  • 我不能相信13个ppl实际上同意String连接?!我想加倍Radek - 改用StringBuilder (2认同)

Mar*_*rco 16

简单回答:

Arrays.toString(arr);

  • Arrays.toString(arr)给出的结果如[1,2,3] .He不需要这种格式 (6认同)

VHS*_*VHS 7

只需 1 行即可以 java 8 方式完成此操作:

String.join("", arr);


Duk*_*ing 6

Arrays.toString :(来自API,至少对于Object[]它的版本)

public static String toString(Object[] a) {
    if (a == null)
        return "null";
    int iMax = a.length - 1;
    if (iMax == -1)
        return "[]";

    StringBuilder b = new StringBuilder();
    b.append('[');
    for (int i = 0; ; i++) {
        b.append(String.valueOf(a[i]));
        if (i == iMax)
            return b.append(']').toString();
        b.append(", ");
    }
}
Run Code Online (Sandbox Code Playgroud)

这意味着它会[在开头,]结尾和,元素之间插入.

如果你想要它没有那些字符:( StringBuilder比下面快,但它不能是少量的代码)

String str = "";
for (String i:arr)
  str += i;
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)

边注:

String[] arr[3]= [1,2,3] 不会编译.

大概你想要: String[] arr = {"1", "2", "3"};


cw'*_*cw' 6

使用Arrays.toString()函数.它使您的代码简短易读.它在内部使用字符串构建器,因此它也很有效.为了摆脱多余的字符,你可以选择使用String.replace()函数来消除它们,这无疑会再次降低可读性.

String str = Arrays.toString(arr).replaceAll(", |\\[|\\]", "");
Run Code Online (Sandbox Code Playgroud)

这类似于Tris Nefzger的答案,但没有冗长的子串结构来摆脱方括号.

正则表达式的解释:"|" 表示","和"["和"]"中的任何一个."\\"告诉Java String我们不是指一些特殊字符(如新行"\n"或标签"\ t"),而是一个真正的反斜杠"\".因此,而不是"\\ [",正则表达式解释器读取"\ [",它告诉它我们的意思是一个文字方括号,并且不想将它用作正则表达式语言的一部分(例如,"[^ 3]*"表示任意数量的字符,但它们都不应为"3").


归档时间:

查看次数:

164628 次

最近记录:

7 年,8 月 前