当前位置: 首页 > 知识库问答 >
问题:

String.split()忽略分隔符之间的空值,如果在字符串的最后一部分[重复]

柯树
2023-03-14

给定以下字符串:

String s ="12/15|22:58:25|B|99.502||||A|100.501|||||";

我在打电话

int len = s.split("\\|").length;

无论如何,长度是9,而不是应该的13。

尽管如此,如果我以这种方式修改所述字符串:

String s ="12/15|22:58:25|B|99.502||||A|100.501|||lol||";

长度为13!怎么会?似乎java进行了某种优化,这不是必需的,因为字符串的这些部分可以在其他上下文中填充。。。

共有1个答案

慕容铭
2023-03-14

默认情况下,拆分从结果数组中删除尾随的空字符串。要关闭此机制,请使用带有负限制的拆分(正则表达式,限制),例如

split("\\|", -1)

更多细节:
拆分(regex)内部返回拆分(regex,0)的结果,在这个方法的留档中,您可以找到(强调我的)

限制参数控制应用阵列的次数,从而影响结果阵列的长度。

如果限制大于零,则模式最多应用n-1次,数组的长度将不大于n,数组的最后一个条目将包含最后一个匹配分隔符以外的所有输入。

如果n为非正,则将尽可能多次应用图案,并且阵列可以有任何长度。

如果n为零,则将尽可能多次应用该模式,数组可以有任何长度,并且将丢弃尾随的空字符串。

 类似资料:
  • 问题内容: 给定以下字符串: 我在打电话 无论如何,长度是9,而不是应该的13。 不过,如果我以这种方式修改所说的字符串: 长度是13!怎么发生的?似乎Java进行了某种优化,这不是必需的,因为可以在其他上下文中填充字符串的那些部分… 问题答案: 默认情况下,从结果数组中删除结尾的空字符串。要关闭此机制,请使用负数限制,例如 更多细节: 内部返回此方法的结果,您可以在此方法的文档中找到(强调我的)

  • 问题内容: 对于在字符串中 最后一次 出现定界符时拆分字符串的建议Python惯用法是什么?例: 接受第二个参数,即要分割的分隔符的出现。像常规列表索引一样,表示末尾的末尾。如何才能做到这一点? 问题答案: 使用 或代替: 可让您指定分割次数,而仅分割一次,但总是返回固定数量的元素(前缀,定界符和后缀),并且对于单个分割情况而言更快。 演示: 两种方法都从字符串的右侧开始拆分;通过将最大值作为第二

  • 在字符串中分隔符的最后一次出现时拆分字符串的推荐Python习惯用法是什么?例如: 接受第二个参数,该参数是要拆分的分隔符的引用。与常规列表索引一样,表示从末尾开始的最后一个。如何做到这一点?

  • 我必须删除python中以开头和以结尾的字符串(例如,我必须用空字符串替换字符串)。但这里的问题是它可以从三个或四个或任意数量的开始。我尝试使用regex。但是当它在上运行时,它将作为输出而不是空字符串。你能给我一些建议吗?

  • 我正在尝试在文本中查找html标签,如下所示: 但是颜色部分可以改变(比如#bbbbbb)…我想我可以为此使用正则表达式,对吗?但是我不确定我怎么能忽略它的颜色部分… 你能帮我吗?这可能吗? 非常感谢你

  • 我想拆分到一个数组4使用 这是我的代码: 但是,结果标记是一个空数组:[],而不是我想要的4的数组。 我已经测试过稍微更改一下str: 这次的结果标记是<代码>[“”、“”、“”、“”、“”1“]。这接近我想要的,但我真的不想在进行拆分之前添加这个“1”。 问题基本上是字符串。如果split()只包含空元素,它将返回空数组。 你能帮我解决这个问题吗?