【问题标题】:Java : regex split() based on 2 delimitersJava:基于 2 个分隔符的正则表达式 split()
【发布时间】:2015-07-07 16:30:24
【问题描述】:

我想在空格后跟逗号时拆分字符串。

我的输入字符串:

go back, to work !  ,2012-10-01 07:01:45,,  1

预期输出:

"go back, to work !"    
"2012-10-01 07:01:45,,1"

我试过的代码:

String[] b1=a1.split("[\\s,]");

但这仅根据空格拆分字符串。我想在同时存在空格和逗号时将其拆分,而不仅仅是其中一个。我该怎么办?

【问题讨论】:

  • 您的字符串末尾还包含,, 1 - 它似乎没有显示在预期的输出中 - 但您没有提到它应该被“清理”
  • @alfasin :是的,输出应该只有 2 个部分。我已经编辑了帖子。
  • 您的方括号[\\s,] 定义了一个字符类,表示该类中的任何一个字符—— 不是字符序列space-comma
  • 我修复了预期输出的修复。从口头描述来看,第二个字符串应该包含,,1,它们不应该在引用的字符串之外。

标签: java regex string split


【解决方案1】:

空格后跟逗号

String[] b1 = a1.split("\\s,");

[\\s,] 是一个字符类,它将以空格或逗号分隔。

【讨论】:

  • OP 不清楚要求,但他确实声明请求的输出应将2012-10-01 07:01:45,, 1 分成两个字符串:2012-10-01 07:01:451。恐怕非常很难找到一个完全符合他要求的正则表达式(这也意味着正则表达式可能不是适合该工作的工具本例)。
  • 我不想根据空格“或”逗号分割它。当有空格后跟逗号时,我想将其拆分。
  • 是的,这就是我的回答提供的,即split on whitespace followed by comma
  • @anubhava :很抱歉,它只在空白处拆分。
  • @keerthupraveen 不,这个正则表达式有效。确保你真的使用了他的正则表达式。
【解决方案2】:

当出现空格,然后出现逗号时,使用它来分割字符串。

String[] b1 = a1.split(" ,");

【讨论】:

    【解决方案3】:

    使用("\\s,") 分割空格后跟逗号不会为您提供所需的输出

    "go back, to work !"
    
    "2012-10-01 07:01:45"
    
    1
    

    输出将是

    go back, to work !
    
    2012-10-01 07:01:45,, 1
    

    您可以使用逗号后跟空格或空格后跟逗号使用"\\s,|,\\s",然后您将得到以下输出

    go back
    
    to work !
    
    2012-10-01 07:01:45,
    
    1
    

    但是它仍然与您想要的不同。您可能想澄清您的要求。

    【讨论】:

    • 我已经编辑了我的帖子。我希望输出只有两部分。但是 ("\\s,") 并不能解决问题。它仅在空格处拆分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    相关资源
    最近更新 更多