将string转换为Java中的“Character”数组

我想将String转换为字符类的对象数组,但我无法执行转换。 我知道我可以使用toCharArray()方法将string转换为原始数据types为“char”的数组,但是它不能帮助将string转换为字符types的对象数组。

我怎么会这样做呢?

用这个:

 String str = "testString"; char[] charArray = str.toCharArray(); Character[] charObjectArray = ArrayUtils.toObject(charArray); 

java-8的一个class轮:

 String str = "testString"; //[t, e, s, t, S, t, r, i, n, g] Character[] charObjectArray = str.chars().mapToObj(c -> (char)c).toArray(Character[]::new); 

它所做的是:

  • 获得一个IntStream的字符(你也可以看看codePoints()
  • 将每个“字符”值映射到Character (您需要强制转换为真正的char ,然后Java会将其自动Character
  • 通过调用toArray()获得结果数组

为什么不自己写一点方法呢?

 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++) { array[i] = new Character(s.charAt(i)); } return array; } 

我希望下面的代码将帮助你。

 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]); } 

它的工作和输出是:

 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 

String#toCharArray返回一个char数组,你拥有的是一个Character数组。 在大多数情况下,如果您使用charCharacter ,那么这是没有关系的,因为有自动装箱 。 在你的情况问题是,数组不是自动装箱,我build议你使用一个char( char[] )的数组。

在这种情况下,你必须编写你自己的方法。 使用循环并使用charAt(i)获取每个字符,并使用arrayname[i] = string.charAt[i]将其设置为您的Character[]数组。

此方法将String作为参数,并返回字符数组

 /** * @param sourceString * :String as argument * @return CharcterArray */ public static Character[] toCharacterArray(String sourceString) { char[] charArrays = new char[sourceString.length()]; charArrays = sourceString.toCharArray(); Character[] characterArray = new Character[charArrays.length]; for (int i = 0; i < charArrays.length; i++) { characterArray[i] = charArrays[i]; } return characterArray; } 

另一种方式来做到这一点。

 String str="I am a good boy"; char[] chars=str.toCharArray(); Character[] characters=new Character[chars.length]; for (int i = 0; i < chars.length; i++) { characters[i]=chars[i]; System.out.println(chars[i]); } 

如果你正在使用JTextField,那么它可以是有帮助的。

 public JTextField display; String number=e.getActionCommand(); display.setText(display.getText()+number); ch=number.toCharArray(); for( int i=0; i<ch.length; i++) System.out.println("in array a1= "+ch[i]); 

链接总是最好的:D

 String str = "somethingPutHere"; Character[] c = ArrayUtils.toObject(str.toCharArray()); 

如果您不想依赖第三方API,则下面是JDK7或更低版​​本的工作代码。 我没有像上面的其他解决scheme那样实例化临时字符对象。 foreach循环更具可读性,看你自己:)

 public static Character[] convertStringToCharacterArray(String str) { if (str == null || str.isEmpty()) { return null; } char[] c = str.toCharArray(); final int len = c.length; int counter = 0; final Character[] result = new Character[len]; while (len > counter) { for (char ch : c) { result[counter++] = ch; } } return result; } 

我在java.io中使用了StringReader类。 其中一个函数read(char[] cbuf)将string的内容读入一个数组。

 String str = "hello"; char[] array = new char[str.length()]; StringReader read = new StringReader(str); try { read.read(array); //Reads string into the array. Throws IOException } catch (IOException e) { e.printStackTrace(); } for (int i = 0; i < str.length(); i++) { System.out.println("array["+i+"] = "+array[i]); } 

运行这个会给你输出:

 array[0] = h array[1] = e array[2] = l array[3] = l array[4] = o