ell*_*lle 4 java arrays string
public static void main(String args[]) {
String sub="0110000";
String a[]=sub.split("");
System.out.println(Arrays.toString(a));
}
Run Code Online (Sandbox Code Playgroud)
我把输出作为
[, 0, 1, 1, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
为什么第一个元素为空?我怎样才能在开始时获得一个没有null的数组?
第一个参数实际上不是null,它是空字符串"".这是输出的一部分的原因是你拆分空字符串.
分裂的文件说
此方法返回的数组包含此字符串的每个子字符串,该子字符串由与给定表达式匹配的另一个子字符串终止,或者由字符串的结尾终止.
输入字符串中的每个位置都以空字符串(包括位置0)开头,因此split函数也会将位置0处的输入拆分.由于第0个元素前面没有字符,因此第一个元素的空字符串.
试试这个:
String sub = "0110000";
String a[] = sub.split("(?<=.)");
System.out.println(Arrays.toString(a));
Run Code Online (Sandbox Code Playgroud)
输出:
[0, 1, 1, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
该模式(?<=.)是一个"零宽度正向后观",与任意角色(.)相匹配.在文字中,它粗略地说"分裂在每个空字符串上,前面有一些字符".
这是一个奇怪String#split的字符串,它实际上是一个正则表达式,匹配输入开头的空字符串.
试着toCharArray()改为:
public static void main(String args[])
{
String sub="0110000";
char a[]=sub.toCharArray();
System.out.println(Arrays.toString(a));
}
Run Code Online (Sandbox Code Playgroud)
我将把它作为练习让读者将char[]数组转换成String[]