将string拆分为string数组

我需要将一个string拆分为单个string的数组。

例如,拆分“猫”会给arrays“C”,“A”,“T”

"cat".split("(?!^)") 

这会产生

数组[“c”,“a”,“t”]

 "cat".toCharArray() 

但是,如果你需要string

 "cat".split("") 

编辑:这将返回一个空的第一个值。

 String str = "cat"; char[] cArray = str.toCharArray(); 

看看String类的getChars()方法。

将string转换为一个string的有效方法是执行此操作:

 String[] res = new String[str.length()]; for (int i = 0; i < str.length(); i++) { res[i] = Character.toString(str.charAt(i)); } 

但是,这并没有考虑到String中的char实际上可以代表一半Unicode代码点的事实。 (如果代码点不在BMP中)。为了处理这个问题,你需要遍历更复杂的代码点。

这种方法比使用String.split(/* clever regex*/)更快,并且可能比使用Java 8+stream更快。 这可能比这更快:

 String[] res = new String[str.length()]; int 0 = 0; for (char ch: str.toCharArray[]) { res[i++] = Character.toString(ch); } 

因为toCharArray必须字符复制到一个新的数组中。

如果input的字符超出基本多语言平面 (一些CJK字符,新的表情符号…),则不能使用诸如"a💫b".split("(?!^)")方法,因为它们会破坏这些字符(结果到array ["a", "?", "?", "b"] )和更安全的使用:

 "a💫b".codePoints() .mapToObj(cp -> new String(Character.toChars(cp))) .toArray(size -> new String[size]); 

也许你可以使用一个for循环遍历string内容,并使用charAt方法通过字符提取字符。

结合一个ArrayList<String>例如,你可以得到你的个人字符数组。

 for(int i=0;i<str.length();i++) { System.out.println(str.charAt(i)); }