我有一个Character
数组(不是char数组),我希望通过组合数组中的所有字符将其转换为字符串。
我为给定的Character[] a
尝试了以下内容:
String s = new String(a) //given that a is a Character array
但这不起作用,因为a不是char数组。我将不胜感激任何帮助。
答案 0 :(得分:15)
Character[] a = ...
new String(ArrayUtils.toPrimitive(a));
ArrayUtils
是Apache Commons Lang的一部分。
答案 1 :(得分:8)
最有效的方法是:
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并置表达式......但它不会在多个语句中批准该优化。因此这样的事情:
String s = ""
for (Character c : chars) {
s += c;
}
可能会进行大量单独的连接,创建(并丢弃)大量中间字符串。
答案 2 :(得分:5)
迭代并连接方法:
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
答案 3 :(得分:3)
这可能很慢,但对于踢球来说这是一个丑陋的单线,与其他方法不同 -
Arrays.toString(characterArray).replaceAll(", ", "").substring(1, characterArray.length + 1);
答案 4 :(得分:3)
可能是一种矫枉过正,但在Java 8上你可以做到这一点:
Character[] chars = {new Character('a'),new Character('b'),new Character('c')};
String value = Arrays.stream(chars)
.map(Object::toString)
.collect( Collectors.joining() );
答案 5 :(得分:2)
在每个索引处,调用toString方法,并将结果连接到String s。
答案 6 :(得分:2)
首先将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);
答案 7 :(得分:2)
如何创建自己的方法,迭代字符数组列表,然后将每个值附加到新字符串。
像这样。
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;
}
答案 8 :(得分:0)
int length = cArray.length;
String val="";
for (int i = 0; i < length; i++)
val += cArray[i];
System.out.println("String:\t"+val);
答案 9 :(得分:0)
实际上,如果你有番石榴,你可以使用Chars.toArray()
来制作char[]
,然后只需将结果发送到String.valueOf()
。