Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将数组中的元素连接到字符串_Java_Arrays_String_Converter - Fatal编程技术网

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

Java 将数组中的元素连接到字符串,java,arrays,string,converter,Java,Arrays,String,Converter,我有点困惑。我到处都找不到答案;( 我有一个字符串数组: String[] arr = ["1", "2", "3"]; 然后我通过以下方式将其转换为字符串: String str = Arrays.toString(arr); System.out.println(str); 我希望得到字符串“123”,但是我得到了字符串“[1,2,3]” 我如何用java实现它?我使用的是EclipseIDE Arrays.toString(arr); 输出为[1,2,3],您将其存储到字符串中。然后

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

我有一个字符串数组:

String[] arr = ["1", "2", "3"];
然后我通过以下方式将其转换为字符串:

String str = Arrays.toString(arr);
System.out.println(str);
我希望得到字符串
“123”
,但是我得到了字符串
“[1,2,3]”

我如何用java实现它?我使用的是EclipseIDE

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

String[]strArr={“1”、“2”、“3”};
StringBuilder strBuilder=新StringBuilder();
对于(int i=0;i
这就是为什么这是使用字符串串联的更好解决方案:当您串联2个字符串时,将创建一个新的字符串对象并执行逐字符复制。
实际上意味着代码复杂性将是数组大小的平方的顺序

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

简单回答:


Arrays.toString(arr);
Arrays.toString正在格式化输出(添加括号和逗号)。您应该实现自己的toString方法

public String toString(String[] arr){
    String result = "";
    for(String s : arr)
        result+=s;
    return result;
}

[编辑]Stringbuilder更好。请参见上文。

数组。toString:(从API,至少对于
对象[]
版本)

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

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

旁注:

String[]arr[3]=[1,2,3]
将无法编译


大概您想要:
String[]arr={“1”、“2”、“3”};

对象类有toString方法。扩展它的所有其他类都会重写toString方法,因此在for数组中,toString也会以这种方式被重写。因此,如果您希望以自己的方式输出,则需要创建自己的方法,通过该方法可以获得所需的结果

str="";
for (Integer i:arr){
     str+=i.toString();
}
希望这有帮助

请参阅

但简而言之,Arrays.toString(arr)只是打印primative数组内容的一种简单方法。

具有Joiner实用程序来解决此问题:

例如:

String joinWithoutSeparator = Joiner.on("").join(1, 2, 3); // returns "123"
String joinWithSeparator = Joiner.on(",").join(1, 2, 3); // returns "1,2,3"

对于基于Spring的项目:

对于Apache Commons用户,提供了一组好的连接方法:


我刚刚写了以下内容:

public static String toDelimitedString(int[] ids, String delimiter)
{
    StringBuffer strb = new StringBuffer();
    for (int id : ids)
    {
      strb.append(String.valueOf(id) + delimiter);
    }
    return strb.substring(0, strb.length() - delimiter.length());
 }
以下是一种方法: 数组.toString(数组).substring(1,(3*array.length-1)).replaceAll(“,”,”)

下面是一个演示类:

package arraytostring.demo;

import java.util.Arrays;

public class Array2String {

        public static void main(String[] args) {

                String[] array = { "1", "2", "3", "4", "5", "6", "7" };
                System.out.println(array2String(array));
                // output is: 1234567
        }

        public static String array2String(String[] array) {

                return Arrays.toString(array).substring(1, (3 * array.length - 1))
                                .replaceAll(", ", "");

        }

}
Scala使这更容易、更清洁、更安全:

scala> val a = Array("1", "2", "3")
a: Array[String] = Array(1, 2, 3)

scala> val aString = a.mkString
aString: String = 123

scala> println(aString)
123
使用番石榴(r18内部使用
StringBuilder

Joiner
非常有用,因为它是线程安全的、不可变的,可以在许多地方重用,而无需重复代码。在我看来,它也更具可读性


使用Java8的支持,我们还可以将其简化为一行程序

String concat = Stream.of(arr).collect(Collectors.joining());
本例中的两个输出都是
123

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

String str = Arrays.toString(arr).replaceAll(", |\\[|\\]", "");
这与Tris Nefzger的答案类似,但没有长时间的子字符串构造来摆脱方括号

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

这是一段将字符串数组转换为字符串而不使用
[
]

String[] strArray = new String[]{"Java", "String", "Array", "To", "String", "Example"};

String str = Arrays.toString(strArray);
            str = str.substring(1, str.length()-1).replaceAll(",", "");
  • 首先将数组转换为字符串
  • 第二,从x到y位置获取文本
  • 第三,将所有“,”替换为“”

对于使用Android开发的用户,请使用TextUtils

String items = TextUtils.join("", arr);
假设arr的类型为
String[]arr={“1”、“2”、“3”};

输出将是123个数组。toString()可用于将字符串数组转换为字符串。可以使用正则表达式或简单地使用replace方法删除多余的字符

Arrays.toString(strArray).replace(",", "").replace("[", "").replace("]", "");
Java8引入了新的字符串连接方法 公共静态字符串联接(CharSequence分隔符、CharSequence…元素)


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

String.join(“,arr);
使用Java8的示例

  String[] arr = {"1", "2", "3"};
  String join = String.join("", arr);

< P> >我希望有助于

为什么不循环和连接数组中的每个元素?@ LGAP看起来不是这样。我已经尝试过了,但它在5月份没有工作,为什么要在字符串数组中存储整数值呢?答案只提供代码片段不是很有帮助。请考虑添加一些注释或简要解释它所做的事情。这仍然是最好的答案,因为其他人使用字符串连接使用StringBuilder而不是StringBuffer。StringBuffer是线程安全的,在本例中不需要。+1是迄今为止我尝试过的最快的解决方案!@walv感谢walv的伟大建议,我修改了我的答案:)如果你连接的字符串非常大,那么你应该uldn't ask i==iMax?在每次迭代中!只需始终添加一个分隔符,然后在循环后删除最后一个分隔符!@Sauer注意,第一个代码示例不是我自己编写的,它是从Java直接复制和粘贴的
String[] strArray = new String[]{"Java", "String", "Array", "To", "String", "Example"};

String str = Arrays.toString(strArray);
            str = str.substring(1, str.length()-1).replaceAll(",", "");
String items = TextUtils.join("", arr);
Arrays.toString(strArray).replace(",", "").replace("[", "").replace("]", "");
String.join("", strArray);
String newString= Arrays.toString(oldString).replace("[","").replace("]","").replace(",","").trim();
  String[] arr = {"1", "2", "3"};
  String join = String.join("", arr);