我有一个Character
数组(不是 char 数组),我想通过组合数组中的所有字符将其转换为字符串。
我已经尝试了以下给定的Character[] a
:
String s = new String(a) //given that a is a Character array
但这不起作用,因为 a 不是 char 数组。我将不胜感激任何帮助。
Character[] a = ...
new String(ArrayUtils.toPrimitive(a));
ArrayUtils
是Apache Commons Lang的一部分。
最有效的方法很可能是这样的:
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;
}
可能会做很多单独的连接,创建(和丢弃)很多中间字符串。
迭代和连接方法:
Character[] chars = {new Character('a'),new Character('b'),new Character('c')};
StringBuilder builder = new StringBuilder();
for (Character c : chars)
builder.append(c);
System.out.println(builder.toString());
输出:
美国广播公司
首先将 to 转换Character[]
为char[]
,并用于String.valueOf(char[])
获取 String ,如下所示:
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);
它可能很慢,但对于踢球来说,这是一个与其他方法不同的丑陋单线 -
Arrays.toString(characterArray).replaceAll(", ", "").substring(1, characterArray.length + 1);
可能有点矫枉过正,但在 Java 8 上你可以这样做:
Character[] chars = {new Character('a'),new Character('b'),new Character('c')};
String value = Arrays.stream(chars)
.map(Object::toString)
.collect( Collectors.joining() );
在每个索引处,调用 toString 方法,并将结果连接到您的 String s。
如何创建自己的方法来遍历字符数组列表,然后将每个值附加到新字符串。
像这样的东西。
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;
}
实际上,如果你有 Guava,你可以使用Chars.toArray()
来产生char[]
然后简单地将结果发送到String.valueOf()
.
int length = cArray.length;
String val="";
for (int i = 0; i < length; i++)
val += cArray[i];
System.out.println("String:\t"+val);