【问题标题】:Regex to keep null input正则表达式保持空输入
【发布时间】:2017-09-15 13:40:27
【问题描述】:

我目前正在开发一个程序,该程序通过单词、空格和标点符号将完整的句子字符串拆分为字符串数组。但是,如果输入的句子为空,我也希望能够使程序执行某些操作。目前,我拥有的正则表达式正在丢弃任何空输入。表达式为:

String[] fragments = sentence.split("(?<=\\b|[^\\p{L}])");

有没有办法修改这个正则表达式,以便在遇到空输入时,数组将包含该空值,以便稍后在程序中进行处理?

【问题讨论】:

  • 空如null"" ?
  • 我必须同时考虑这两者。所以它必须为空。
  • 在这些情况下您的预期输出是什么? null 你必须提前捕捉,否则 sentence.split 会抛出 NPE。
  • "" 不为空——它是一个非空的空字符串。改掉称它为 null 的习惯是件好事,因为这两个东西的工作方式截然不同,将它们混为一谈会导致混乱。
  • 如果传入的值为 null,我只是想在不引发异常的情况下让返回的值也为 null,但是,我不确定这是否可能。

标签: java arrays regex split null


【解决方案1】:
String[] fragments = (sentence == null) ? null : sentence.split("(?<=\\b|[^\\p{L}])");

根据您的要求,这应该

  • 如果输入为空,则返回 null
  • 如果输入为“”,则返回一个包含单个条目“”的数组。
  • 如果不是 "" 也不是 null,则按预期返回数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    相关资源
    最近更新 更多