【问题标题】:String Splitting with multiple delimiters java [duplicate]带有多个分隔符的字符串拆分java [重复]
【发布时间】:2016-06-23 04:36:07
【问题描述】:

我正在使用多个分隔符拆分字符串。 分隔符是:

, . @ ? ! _ ' and white space etc. 

下面是我的代码:

String[] tokens = s.split("[!|?|,|.|_|'|@ |\\s]");

输入:

他是一个非常非常好的男孩,不是吗?

拆分后的预期输出为:10 个令牌



一个
非常
非常
不错
男孩

t

但我的输出低于:11 个令牌



一个
非常
非常
不错
男孩


t

因为两个分隔符空格和逗号是相邻的,所以它给出了 11 个标记。如何获得预期的输出?

【问题讨论】:

  • 第一件事..字符类是字符的或条件..所以不需要在字符类中使用|
  • 你的“等”能更具体吗?在你的分隔符中?还有哪些字符可以作为分隔符?
  • 你也可以使用字符串标记化。

标签: java regex string split


【解决方案1】:

您可以使用+ 来查找组合,如果您想避免多个连续的分隔符导致空字符串

s.split("[,.@?!_'\\s]+")

注意 :- 正如我在评论中提到的,字符类本身用作字符的OR 条件。所以,不需要在字符类中使用|来实现交替,因为它会匹配|字面意思。

【讨论】:

    【解决方案2】:

    要匹配多个连续的分隔符,请使用+

    s.split("[,.@?!_'\\s]+");
    

    您应该考虑使用的另一个正则表达式是:

    s.split("[\\W_]+");
    

    这将拆分,以便将任何非单词字符视为分隔符。这不是您的问题所指定的,但它也具有您期望的输出。

    【讨论】:

    • 这真是太好了!
    猜你喜欢
    • 2021-11-10
    • 2015-11-06
    • 2017-03-21
    • 2020-04-17
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多