在Java中将Character数组转换为字符串

时间:2012-10-31 03:05:57

标签: java string char

我有一个Character数组(不是char数组),我希望通过组合数组中的所有字符将其转换为字符串。

我为给定的Character[] a尝试了以下内容:

String s = new String(a) //given that a is a Character array

但这不起作用,因为a不是char数组。我将不胜感激任何帮助。

10 个答案:

答案 0 :(得分:15)

Character[] a = ...
new String(ArrayUtils.toPrimitive(a));

ArrayUtilsApache Commons Lang的一部分。

答案 1 :(得分:8)

最有效的方法是:

Character[] chars = ...

StringBuilder sb = new StringBuilder(chars.length);
for (Character c : chars)
    sb.append(c.charValue());

String str = sb.toString();

注意:

  1. 使用StringBuilder可以避免创建多个中间字符串。
  2. 提供初始大小可避免重新分配。
  3. 使用charValue()可以避免调用Character.toString() ...
  4. 然而,除非性能是一个重要问题,否则我可能会选择@ 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()