13

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

我已经尝试了以下给定的Character[] a

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

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

4

10 回答 10

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

ArrayUtilsApache Commons Lang的一部分。

于 2012-10-31T03:09:43.147 回答
9

最有效的方法很可能是这样的:

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()...

但是,除非性能是一个重要问题,否则我可能会选择@Torious 的优雅答案。


顺便说一句,JLS 表示允许编译器使用等效的 StringBuilder 代码优化字符串连接表达式……但它不批准跨多个语句的优化。因此是这样的:

    String s = ""
    for (Character c : chars) {
        s += c;
    }

可能会做很多单独的连接,创建(和丢弃)很多中间字符串。

于 2012-10-31T03:42:28.863 回答
6

迭代和连接方法:

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());

输出:

美国广播公司

于 2012-10-31T03:08:52.900 回答
3

首先将 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);
于 2012-10-31T03:12:50.183 回答
3

它可能很慢,但对于踢球来说,这是一个与其他方法不同的丑陋单线 -

Arrays.toString(characterArray).replaceAll(", ", "").substring(1, characterArray.length + 1);
于 2012-10-31T03:29:04.130 回答
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() );
于 2016-03-23T21:22:35.300 回答
2

在每个索引处,调用 toString 方法,并将结果连接到您的 String s。

于 2012-10-31T03:11:03.953 回答
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;
} 
于 2012-10-31T03:16:33.160 回答
1

实际上,如果你有 Guava,你可以使用Chars.toArray()来产生char[]然后简单地将结果发送到String.valueOf().

于 2016-04-17T16:18:07.767 回答
0
int length = cArray.length;
String val="";
for (int i = 0; i < length; i++)
    val += cArray[i];
System.out.println("String:\t"+val);
于 2013-08-03T08:53:42.680 回答