我有一個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()
。
上面正在處理字符[] :) –