将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
数组。 在大多数情况下,如果您使用char
或Character
,那么这是没有关系的,因为有自动装箱 。 在你的情况问题是,数组不是自动装箱,我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