当前位置: 首页 > 面试题库 >

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进行了某种优化,这不是必需的,因为可以在其他上下文中填充字符串的那些部分…


问题答案:

默认情况下,split从结果数组中删除结尾的空字符串。要关闭此机制,请使用split(regex, limit)负数限制,例如

split("\\|", -1)

更多细节:
split(regex)内部返回此方法的结果,您可以split(regex, 0)在此方法的文档中找到(强调我的)

limit参数控制应用图案的次数,因此会影响所得数组的长度。

如果限制n大于零, 则该模式将最多n应用- 1次,数组的长度将不会大于n,并且数组的最后项将包含超出最后匹配的定界符的所有输入。

如果n的非正 则模式将被应用多次可能的,并且阵列可以具有任意长度。

如果nIS 则模式将被应用的次数成为可能,该阵列可具有任何长度,并且 拖尾空字符串将被丢弃



 类似资料:
  • 给定以下字符串: 我在打电话 无论如何,长度是9,而不是应该的13。 尽管如此,如果我以这种方式修改所述字符串: 长度为13!怎么会?似乎java进行了某种优化,这不是必需的,因为字符串的这些部分可以在其他上下文中填充。。。

  • 问题内容: 我有以下数据: 我想定界标记。 分隔符在这里。 我的分隔符设置器是: 然而, 没有给出所需的结果。 问题答案: 无需像您所做的那样通过将分隔符拆分来设置分隔符。 这是可以编译和运行的完整程序: 如果要对模式使用分割,可以使用或。 要查看并付诸实践,下面是使用所有三种方法的示例: 如果要经常使用相同的模式进行拆分,则建议使用模式。顺便说一句,输出为:

  • 问题内容: 我有一个字符串,例如:“这是应该使用的URL http://www.google.com/MyDoc.pdf ” 我只需要提取从http开始并以pdf结尾的URL:http: //www.google.com/MyDoc.pdf 这使我的输出为“应使用的http://www.google.com/MyDoc.pdf” 需要帮助。 问题答案: 这种问题是针对正则表达式进行的: 正则表达式

  • 问题内容: 如何用定界符分割字符串,但是如果转义了,则不能分割?例如,我有一个字符串: 定界符为,转义定界符为。此外,我想忽略转义的反斜杠,因此中的仍然是分隔符。 因此,使用上面的字符串,结果应该是: 问题答案: 使用黑魔法: 匹配一个反斜杠,后跟一个字符,将其跳过并匹配您的定界符。

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

  • 问题内容: 这是该问题的后续措施。 问题在下面的第二行。 问题答案: 具体根据 源,其使用,