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