Java 为什么在这里使用拆分会导致不同的数组大小?
假设我有以下内容,Java 为什么在这里使用拆分会导致不同的数组大小?,java,arrays,regex,string,split,Java,Arrays,Regex,String,Split,假设我有以下内容,stringexample=“12 8 133 | 7 4 2”
stringexample=“12 8 133 | 7 4 2”我想把它改成两个大小相等的数组,目的是以后从每个数组中取出单个整数
首先,String[]x=example.split(“\\\\”)代码>然后
String[]y=x[0]。拆分(\\D”)代码>
及
String[]z=x[1]。拆分(\\D”)代码>
为什么z比y大一个尺寸
一般来说,建议采用什么方法来获取上述字符串?使用分隔符并将整数添加到列表或同等大小的数组中?您使用\\D
按“非数字”进行拆分。但是,7
前面的空格也表示分隔符,前面是空字符串。因此,z
具有长度4
但是,133
后面有一个空格。为什么后面没有空字符串,所以y
也有长度4
?因为将丢弃尾随的空字符串,但不丢弃前导的空字符串
要删除开头的空字符串,请在拆分之前从x
对元素调用trim()
String[] y = x[0].trim().split("\\D");
String[] z = x[1].trim().split("\\D");
此外,您可能希望使用模式“\\D+”
,因此一行中的一个或多个非数字字符将作为分隔符。您正在使用\\D
按“非数字”进行拆分。但是,7
前面的空格也表示分隔符,前面是空字符串。因此,z
具有长度4
但是,133
后面有一个空格。为什么后面没有空字符串,所以y
也有长度4
?因为将丢弃尾随的空字符串,但不丢弃前导的空字符串
要删除开头的空字符串,请在拆分之前从x
对元素调用trim()
String[] y = x[0].trim().split("\\D");
String[] z = x[1].trim().split("\\D");
此外,您可能需要使用模式“\\D+”
,这样一行中的一个或多个非数字字符将被算作分隔符。尝试以下操作:
String example = "12 8 133 | 7 4 2";
String[] x = example.split("\\s+\\|\\s+");
String[] y = x[0].split("\\s+");
String[] z = x[1].split("\\s+");
试试这个:
String example = "12 8 133 | 7 4 2";
String[] x = example.split("\\s+\\|\\s+");
String[] y = x[0].split("\\s+");
String[] z = x[1].split("\\s+");
阵列中有什么?我想,如果你真的看一下数组,就会明白为什么它们有不同的大小7@immibis数组中有一个空格字符。我明白,但我不明白为什么会包括在内?我已经试过按照Enessay的建议使用“\\s+”。@Legato是空格字符还是空字符串?数组中有什么?我想,如果你真的看一下数组,就会明白为什么它们有不同的大小7@immibis数组中有一个空格字符。我明白,但我不明白为什么会包括在内?我已经试过按照Enessay的建议使用“\\s+”。@Legato是空格字符还是空字符串?