我困惑了一下。 我找不到任何地方的答案;(
我有一个String数组:
String[] arr = ["1", "2", "3"];
然后我将其转换为一个字符串:
String str = Arrays.toString(arr);
System.out.println(str);
我希望得到字符串"123"
,但我得到了字符串"[1,2,3]"
来代替。
我怎么能做到这一点在Java中? 我使用的Eclipse IDE
我困惑了一下。 我找不到任何地方的答案;(
我有一个String数组:
String[] arr = ["1", "2", "3"];
然后我将其转换为一个字符串:
String str = Arrays.toString(arr);
System.out.println(str);
我希望得到字符串"123"
,但我得到了字符串"[1,2,3]"
来代替。
我怎么能做到这一点在Java中? 我使用的Eclipse IDE
使用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();
这也是为什么这是一个更好的解决方案,以使用字符串连接:当您连接两个字符串,创建一个新的字符串对象,并进行逐字符复制字符。
有效地意味着代码的复杂性将是你的平方数组的大小的顺序!
( 1+2+3+ ... n
是每次迭代复制的字符的数量)。 StringBuilder的会做的“复制到一个字符串”只有在这种情况下,降低了复杂性,以一次O(n)
答案很简单:
Arrays.toString(arr);
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:(从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字符串,我们不是意味着一些特殊字符(如新线“\ n”或制表符“\ t”的),而是一个真正的反斜杠“\”。 因此,而不是“\\”,正则表达式解释写着“\ [”,告诉它,我们指的是字面括号,不想使用它作为正则表达式语言的一部分(例如,“[^ 3] *”表示任何数量的字符,但其中没有一个应该是‘3’)。
番石榴具有连接符实用程序来解决这个问题:
例:
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());
}
做JAVA中仅有1线8路:
String.join("", arr);
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(对象[] ARR,字符串DELIM)
对于Apache共享的用户,设置好的连接方法:
org.apache.commons.lang.StringUtils.join(对象[]数组,炭分离器)
利用番石榴的Joiner
(在R18内部使用StringBuilder
)
String[] arr= {"1","2","3"};
Joiner noSpaceJoiner = Joiner.on("");
noSpaceJoiner.join(arr))
Joiner
,因为它是线程安全的,不可改变的,在很多地方,而无需重复的代码被重用是非常有用的。 在我看来,这也更易读。
使用Java 8的Stream
支持,我们还可以降低下来到一个班轮。
String concat = Stream.of(arr).collect(Collectors.joining());
在这种情况下,两个输出是123
这是转换字符串数组串的少的代码而不[
或]
或,
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以这种方式overrided。 所以,如果你想在你的方式你的输出,你需要创建自己的方法,通过它你会得到你想要的结果。
str="";
for (Integer i:arr){
str+=i.toString();
}
希望这可以帮助
请参阅为什么似乎在Java中的toString方法不是为一个数组工作
下面是一个方法来做到这一点:Arrays.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> 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中开发,使用文本实用程序。
String items = TextUtils.join("", arr);
假设ARR是类型的String[] arr= {"1","2","3"};
输出将是123
实施例使用Java 8。
String[] arr = {"1", "2", "3"};
String join = String.join("", arr);
我希望帮助
Arrays.toString()可用于字符串数组转换为字符串。 多余的字符可以通过使用正则表达式的表达式或简单地通过使用替代的方法来除去。
Arrays.toString(strArray).replace(",", "").replace("[", "").replace("]", "");
Java的8引入了新的方法弦乐加入公共静态字符串连接(CharSequence的分隔符,为CharSequence ...元素)
String.join("", strArray);
String newString= Arrays.toString(oldString).replace("[","").replace("]","").replace(",","").trim();