可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have a Character
array (not char array) and I want to convert it into a string by combining all the Characters in the array.
I have tried the following for a given Character[] a
:
String s = new String(a) //given that a is a Character array
But this does not work since a is not a char array. I would appreciate any help.
回答1:
Iterate and concatenate approach:
Character[] chars = {new Character('a'),new Character('b'),new Character('c')};
String str = "";
for (Character c : chars)
str += c.toString();
System.out.println(str);
Output:
abc
回答2:
Character[] a = ...
new String(ArrayUtils.toPrimitive(a));
ArrayUtils
is part of Apache Commons Lang.
回答3:
The most efficient way to do it is most likely this:
Character[] chars = ...
StringBuilder sb = new StringBuilder(chars.length);
for (Character c : chars)
sb.append(c.charValue());
String str = sb.toString();
Notes:
- Using a StringBuilder avoids creating multiple intermediate strings.
- Providing the initial size avoids reallocations.
- Using
charValue()
avoids calling Character.toString()
...
However, I'd probably go with @Torious's elegant answer unless performance was a significant issue.
Incidentally, the JLS says that the compiler is permitted to optimize String concatenation expressions using equivalent StringBuilder code ... but it does not sanction that optimization across multiple statements. Therefore something like this:
String s = ""
for (Character c : chars) {
s += c;
}
is likely to do lots of separate concatenations, creating (and discarding) lots of intermediate strings.
回答4:
It's probably slow, but for kicks here is an ugly one-liner that is different than the other approaches -
Arrays.toString(characterArray).replaceAll(", ", "").substring(1, characterArray.length + 1);
回答5:
Probably an overkill, but on Java 8 you could do this:
Character[] chars = {new Character('a'),new Character('b'),new Character('c')};
String value = Arrays.stream(chars)
.map(Object::toString)
.collect( Collectors.joining() );
回答6:
At each index, call the toString method, and concatenate the result to your String s.
回答7:
First convert the Character[]
to char[]
, and use String.valueOf(char[])
to get the String as below:
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);
回答8:
how about creating your own method that iterates through the list of Character array then appending each value to your new string.
Something like this.
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;
}
回答9:
int length = cArray.length;
String val="";
for (int i = 0; i < length; i++)
val += cArray[i];
System.out.println("String:\t"+val);
回答10:
Actually, if you have Guava, you can use Chars.toArray()
to produce char[]
then simply send that result to String.valueOf()
.