有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有点困惑。我到处都找不到答案;(

我有一个字符串数组:

String[] arr = ["1", "2", "3"];

然后我通过以下方式将其转换为字符串:

String str = Arrays.toString(arr);
System.out.println(str);

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

我怎么能用java来做呢?我正在使用EclipseIDE


共 (6) 个答案

  1. # 1 楼答案

    只需一行,就可以用java 8种方式完成:

    String.join("", arr);

  2. # 2 楼答案

    Use StringBuilder instead of StringBuffer, because it is faster than StringBuffer.

    Sample code

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

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

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

  3. # 3 楼答案

    简单回答:

    Arrays.toString(arr);

  4. # 4 楼答案

    使用数组。toString()函数。它使您的代码简短易读。它在内部使用字符串生成器,因此,它也很高效。为了消除多余的字符,您可以选择使用字符串消除它们。replace()函数,不可否认,它再次降低了可读性

    String str = Arrays.toString(arr).replaceAll(", |\\[|\\]", "");
    

    这与Tris Nefzger的答案类似,但没有长时间的子字符串构造来摆脱方括号

    正则表达式的解释:“|”是指“、[”和“]”中的任何一种。 “\\”告诉Java字符串,我们指的不是某个特殊字符(如新行“\n”或制表符“\t”),而是一个真正的反斜杠“\”。 因此,Regex解释器读取“\\[”,而不是“\\[”,这告诉它我们指的是一个文本方括号,不想将其用作Regex语言的一部分(例如,“[^3]*”表示任意数量的字符,但它们都不应该是“3”)

  5. # 5 楼答案

    Arrays.toString(arr);
    

    输出为[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);
    
    
    }
    

    输出:

    123
    
  6. # 6 楼答案

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

    这意味着它在开始处插入[,在结束处插入],在元素之间插入,

    如果您希望它不包含这些字符:(StringBuilder比下面的要快,但它不能是少量的代码)

    String str = "";
    for (String i:arr)
      str += i;
    System.out.println(str);
    

    旁注:

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

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