我有一个Character
数组(非char数组),我想通过组合数组中的所有字符将其转换为字符串。将字符数组转换为Java中的字符串
我曾尝试给定Character[] a
如下:
String s = new String(a) //given that a is a Character array
但是,这并不工作,因为不是一个字符数组。我将不胜感激任何帮助。
我有一个Character
数组(非char数组),我想通过组合数组中的所有字符将其转换为字符串。将字符数组转换为Java中的字符串
我曾尝试给定Character[] a
如下:
String s = new String(a) //given that a is a Character array
但是,这并不工作,因为不是一个字符数组。我将不胜感激任何帮助。
迭代并连接的方法:
Character[] chars = {new Character('a'),new Character('b'),new Character('c')};
String str = "";
for (Character c : chars)
str += c.toString();
System.out.println(str);
输出:
ABC
我只是检查这编译为一个StringBuilder,为相当大的'n' ..我认为*这将发生。 – 2012-10-31 03:12:54
因此,对于N长度数组,您将以内存中的N个字符串结尾 –
@pst - 我非常确定JLS不会在多个语句中批准字符串级联优化。 –
Character[] a = ...
new String(ArrayUtils.toPrimitive(a));
ArrayUtils
是Apache Commons Lang一部分。
在每个索引处,调用toString方法,并将结果连接到您的String。
首先转换Character[]
到char[]
,并使用String.valueOf(char[])
得到如下字符串:
char[] a1 = new char[a.length];
for(int i=0; i<a.length; i++) {
a1[i] = a[i].charValue();
}
String text = String.valueOf(a1);
System.out.println(text);
如何创建自己的方法,通过字符数组的列表上循环再追加每个值到新的字符串。
就是这样。
public String convertToString(Character[] s) {
String value;
if (s == null) {
return null;
}
Int length = s.length();
for (int i = 0; i < length; i++) {
value += s[i];
}
return value;
}
这也可能是缓慢的,但踢这里是一个丑陋的一行比其它方法不同 -
Arrays.toString(characterArray).replaceAll(", ", "").substring(1, characterArray.length + 1);
最有效的方式做到这一点是最有可能的:
Character[] chars = ...
StringBuilder sb = new StringBuilder(chars.length);
for (Character c : chars)
sb.append(c.charValue());
String str = sb.toString();
注:
charValue()
避免调用Character.toString()
...不过,我可能会用@去Torious优雅的答案,除非性能是一个显著的问题。
顺便说一句,JLS说,允许编译器优化使用StringBuilder的等价代码字符串连接表情......但它不制裁在多个语句的优化。因此,类似这样的:
String s = ""
for (Character c : chars) {
s += c;
}
可能会做很多单独的连接,创建(和丢弃)大量的中间字符串。
int length = cArray.length;
String val="";
for (int i = 0; i < length; i++)
val += cArray[i];
System.out.println("String:\t"+val);
可能矫枉过正,但关于Java 8,你可以这样做:
Character[] chars = {new Character('a'),new Character('b'),new Character('c')};
String value = Arrays.stream(chars)
.map(Object::toString)
.collect(Collectors.joining());
'Arrays.asList(chars).stream()'可以简化为'Arrays.stream(chars)' – Roman
其实,如果你有番石榴,您可以使用Chars.toArray()
生产char[]
则仅仅是结果发送到String.valueOf()
。
上面正在处理字符[] :) –