我正在尝试使用分隔符拆分该值。
但我发现了令人惊讶的结果
String data=“5 | 6 | 7 | 8 | 9 |”;
String[]split=data.split(“\\\\”);
系统输出打印项次(分割长度);
我希望得到8个值[5,6,7,空,8,9,空,空]
但我只得到6个值
任何想法以及如何修复。不管空值在任何地方出现,它都应该在数组中
拆分(分隔符)默认情况下从结果数组中删除尾随的空字符串。要关闭此机制,我们需要使用重载版本的split(delimiter,limit),并将limit设置为负值,如
String[]split=data.split(";\\\\\\\\";,-1);
更多细节:
split(regex)在内部返回split(regex,0)的结果,并在此方法的文档
limit参数控制应用阵列的次数,从而影响结果阵列的长度如果限制
n大于零,则模式最多应用n-1次,数组长度不大于n,数组的最后一个条目将包含最后一个匹配分隔符之外的所有输入如果
n为非正,则图案将被应用尽可能多的次数,并且阵列可以有任何长度如果
n为零,则将尽可能多次应用该模式,数组可以有任何长度,尾随的空字符串将被丢弃
异常:
值得一提的是,只有当这些空字符串是由拆分机制创建的时,删除后面的空字符串才有意义。所以对于”来说&引用;。拆分(任何内容),因为我们无法拆分”&引用我们将得到更多的结果[";]数组。
它之所以发生,是因为这里没有发生拆分,所以&引用尽管为空且尾随,但表示原始字符串,而不是通过拆分过程创建的空字符串