Java String split 删除了空值

本教程将介绍Java String split 删除了空值的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

Java String split 删除了空值 教程 第1张

问题描述

我正在尝试使用分隔符拆分值.但我发现了令人惊讶的结果

String data = "5|6|7||8|9||";
String[] split = data.split("|");
System.out.println(split.length);

我期望得到 8 个值.[5,6,7,EMPTY,8,9,EMPTY,EMPTY]但我只得到 6 个值.

任何想法以及怎么解决.无论 EMPTY 值来自任何地方,它都应该在数组中.

推荐答案

split(delimiter) 默认从结果数组中删除尾随的空字符串.要关闭此机制,我们需要使用 split(delimiter, limit) 的重载版本,并将 limit 设置为负值,例如

String[] split = data.split("|", -1);

更多细节:
split(regex) 内部返回 split(regex, 0) 和 你可以找到这个方法的文档(强调我的)

limit 参数控制应用模式的次数,因此会影响结果数组的长度.

如果限制 n ,那么该模式将最多应用 n - 1 次,数组的长度将不大于 n,并且数组的最后一个条目将包含最后一个匹配分隔符之外的所有输入.

如果 n 为 非正数,则该模式将被应用尽可能多的次数,并且数组可以具有任意长度.

如果n为零,那么该模式将被应用尽可能多的次数,数组可以有任意长度,尾随的空字符串将被丢弃.

例外:

值得一提的是,删除尾随的空字符串才有意义.所以对于 "".split(anything) 因为我们不能将 "" 分割得更远,我们将得到结果 [""] 数组.
发生这种情况是因为此处没有发生拆分,因此 "" 尽管为空且尾随表示 字符串,而不是 通过拆分过程.

好了关于Java String split 删除了空值的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。