在Java中将String转换为"Character"数组

kgd*_*kgd 101 java arrays string character

我想将a转换StringCharacter类的对象数组,但我无法执行转换.我知道我可以使用该toCharArray()方法将String转换为原始数据类型类型为"char"的数组,但它无法将String转换为Character类型的对象数组.

我该怎么做呢?

Kul*_*ain 173

用这个:

String str = "testString";
char[] charArray = str.toCharArray();
Character[] charObjectArray = ArrayUtils.toObject(charArray);
Run Code Online (Sandbox Code Playgroud)

  • 我希望ArrayUtils是JVM的标准配置! (24认同)
  • `ArrayUtils` 来自 `commons-lang`,不是 JDK,对吗? (5认同)

Ale*_* C. 62

一个内衬:

String str = "testString";

//[t, e, s, t, S, t, r, i, n, g]
Character[] charObjectArray = 
    str.chars().mapToObj(c -> (char)c).toArray(Character[]::new); 
Run Code Online (Sandbox Code Playgroud)

它的作用是:

  • 得到一个IntStream人物(你可能也想看codePoints())
  • 将每个'character'值映射到Character(你需要强制转换为实际上说它真的是a char,然后Java会自动将它自动封装Character)
  • 通过调用获取结果数组 toArray()


Alv*_*vin 32

为什么不自己写一点方法

public Character[] toCharacterArray( String s ) {

   if ( s == null ) {
     return null;
   }

   int len = s.length();
   Character[] array = new Character[len];
   for (int i = 0; i < len ; i++) {
      // Character(char) is deprecated since Java SE 9 & JDK 9
      <https://docs.oracle.com/javase/9/docs/api/java/lang/Character.html>
      // array[i] = new Character(s.charAt(i));
      array[i] = s.charAt(i);
   }

   return array;
}
Run Code Online (Sandbox Code Playgroud)

  • +1为Character [] array = new Characer [s.length()]; (6认同)
  • 为什么不自己写一点方法呢?因为已经存在一个方法(toCharArray()),并且已经存在的方法比从stackoverflow帖子中复制/粘贴的内容更多地致力于和对该功能的性能和可靠性感兴趣的工程师。 (2认同)

Arp*_*ini 7

将字符串转换为字符数组,然后将字符数组转换回字符串

   //Givent String
   String given = "asdcbsdcagfsdbgdfanfghbsfdab";

   //Converting String to Character Array(It's an inbuild method of a String)
   char[] characterArray = given.toCharArray();
   //returns = [a, s, d, c, b, s, d, c, a, g, f, s, d, b, g, d, f, a, n, f, g, h, b, s, f, d, a, b]
Run Code Online (Sandbox Code Playgroud)

//一种方法:将字符数组转换回字符串

  int length = Arrays.toString(characterArray).replaceAll("[, ]","").length();

  //First Way to get the string back
  Arrays.toString(characterArray).replaceAll("[, ]","").substring(1,length-1)
  //returns asdcbsdcagfsdbgdfanfghbsfdab
  or 
  // Second way to get the string back
  Arrays.toString(characterArray).replaceAll("[, ]","").replace("[","").replace("]",""))
 //returns asdcbsdcagfsdbgdfanfghbsfdab
Run Code Online (Sandbox Code Playgroud)

//第二种方式:将字符数组转换回字符串

String.valueOf(characterArray);
Run Code Online (Sandbox Code Playgroud)

//第三种方式:将字符数组转换回字符串

Arrays.stream(characterArray)
           .mapToObj(i -> (char)i)
           .collect(Collectors.joining());
Run Code Online (Sandbox Code Playgroud)

将字符串转换为字符数组

Character[] charObjectArray =
                           givenString.chars().
                               mapToObj(c -> (char)c).
                               toArray(Character[]::new);
Run Code Online (Sandbox Code Playgroud)

将 char 数组转换为字符数组

 String givenString = "MyNameIsArpan";
char[] givenchararray = givenString.toCharArray();


     String.valueOf(givenchararray).chars().mapToObj(c -> 
                         (char)c).toArray(Character[]::new);
Run Code Online (Sandbox Code Playgroud)

将 char 数组转换为字符数组的好处您可以使用 Arrays.stream 函数来获取子数组

String subStringFromCharacterArray = 

              Arrays.stream(charObjectArray,2,6).
                          map(String::valueOf).
                          collect(Collectors.joining());
Run Code Online (Sandbox Code Playgroud)


JDG*_*ide 5

我希望下面的代码可以帮到你.

String s="Welcome to Java Programming";
char arr[]=s.toCharArray();
for(int i=0;i<arr.length;i++){
    System.out.println("Data at ["+i+"]="+arr[i]);
}
Run Code Online (Sandbox Code Playgroud)

它正在工作,输出是:

Data at [0]=W
Data at [1]=e
Data at [2]=l
Data at [3]=c
Data at [4]=o
Data at [5]=m
Data at [6]=e
Data at [7]= 
Data at [8]=t
Data at [9]=o
Data at [10]= 
Data at [11]=J
Data at [12]=a
Data at [13]=v
Data at [14]=a
Data at [15]= 
Data at [16]=P
Data at [17]=r
Data at [18]=o
Data at [19]=g
Data at [20]=r
Data at [21]=a
Data at [22]=m
Data at [23]=m
Data at [24]=i
Data at [25]=n
Data at [26]=g
Run Code Online (Sandbox Code Playgroud)

  • 这根本不是OP所要求的. (3认同)