[英]Concatenating elements in an array to a string
我有点困惑。 我无法在任何地方找到答案;(
我有一个String数组:
String[] arr = ["1", "2", "3"];
然后我将它转换为字符串:
String str = Arrays.toString(arr);
System.out.println(str);
我希望得到字符串"123"
,但我得到了字符串"[1,2,3]"
。
我怎么能在java中做到这一点? 我正在使用Eclipse IDE
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();
这就是为什么这是使用字符串连接的更好解决方案:当您连接2个字符串时,会创建一个新的字符串对象并执行逐字符复制。
有效地意味着代码复杂性将是数组大小平方的顺序!
( 1+2+3+ ... n
,这是每次迭代复制的字符数)。 在这种情况下, StringBuilder只会执行“复制到字符串”一次,从而将复杂度降低到O(n)
。
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
简单回答:
Arrays.toString(arr);
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(", ");
}
}
因此,这意味着它插入[
在开始时, ]
在端部,并且,
元件之间。
如果你想要它没有那些字符:( StringBuilder比下面快,但它不能是少量的代码)
String str = "";
for (String i:arr)
str += i;
System.out.println(str);
边注:
String[] arr[3]= [1,2,3]
将无法编译。
大概你想要: String[] arr = {"1", "2", "3"};
使用Arrays.toString()函数。 它使您的代码简短易读。 它在内部使用字符串构建器,因此它也很有效。 为了摆脱多余的字符,你可以选择使用String.replace()函数来消除它们,这无疑会再次降低可读性。
String str = Arrays.toString(arr).replaceAll(", |\\[|\\]", "");
这类似于Tris Nefzger的答案,但没有冗长的子串结构来摆脱方括号。
正则表达式的解释:“|” 表示“,”和“[”和“]”中的任何一个。 “\\\\”告诉Java String我们不是指一些特殊字符(如新行“\\ n”或标签“\\ t”),而是一个真正的反斜杠“\\”。 因此,而不是“\\\\ [”,正则表达式解释器读取“\\ [”,它告诉它我们的意思是一个文字方括号,并且不想将它用作正则表达式语言的一部分(例如,“[^ 3] *“表示任意数量的字符,但它们都不应为”3“)。
只需1行即可实现java 8方式:
String.join("", arr);
Guava有Joiner实用程序来解决这个问题:
例:
String joinWithoutSeparator = Joiner.on("").join(1, 2, 3); // returns "123"
String joinWithSeparator = Joiner.on(",").join(1, 2, 3); // returns "1,2,3"
我刚刚写了以下内容:
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());
}
Arrays.toString正在格式化输出(添加了括号和逗号)。 你应该实现自己的toString方法。
public String toString(String[] arr){
String result = "";
for(String s : arr)
result+=s;
return result;
}
[编辑] Stringbuilder虽然更好。 往上看。
对于基于Spring的项目:
org.springframework.util.StringUtils.arrayToDelimitedString(Object [] arr,String delim)
对于Apache Commons用户,一组很好的连接方法:
org.apache.commons.lang.StringUtils.join(Object []数组,char分隔符)
这是转换字符串数组串的少的代码而不[
或]
或,
String[] strArray = new String[]{"Java", "String", "Array", "To", "String", "Example"};
String str = Arrays.toString(strArray);
str = str.substring(1, str.length()-1).replaceAll(",", "");
但简而言之,Arrays.toString(arr)只是一种打印原始数组内容的简单方法。
Object类有toString方法。 扩展它的所有其他类都会覆盖toString方法,因此对于数组,toString也会以这种方式被覆盖。 因此,如果您希望以自己的方式输出输出,则需要创建自己的方法,以获得所需的结果。
str="";
for (Integer i:arr){
str+=i.toString();
}
希望这可以帮助
这是一种方法:Arrays.toString(array).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
对于那些在Android中开发的人,请使用TextUtils。
String items = TextUtils.join("", arr);
假设arr的类型为String[] arr= {"1","2","3"};
输出将是123
Arrays.toString()可用于将String Array转换为String。 可以使用Regex表达式或仅使用replace方法删除多余的字符。
Arrays.toString(strArray).replace(",", "").replace("[", "").replace("]", "");
Java 8为String join公共静态String join(CharSequence delimiter,CharSequence ... elements)引入了新方法
String.join("", strArray);
使用Java 8的示例。
String[] arr = {"1", "2", "3"};
String join = String.join("", arr);
我希望有所帮助
String newString= Arrays.toString(oldString).replace("[","").replace("]","").replace(",","").trim();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.