【问题标题】:Using multiple delimiters for .split in Java在 Java 中为 .split 使用多个分隔符
【发布时间】:2013-11-26 21:24:25
【问题描述】:

现在我的代码只用空格分隔单词,但我也想用 '.' 分隔。和“,”也是。这是我当前的代码:

for (String words : input.split("\\s+"))

例如,如果用户输入“bread,milk,eggs”或“Um...awkss”,它会认为是一个词,我希望每个词都是它自己的词。

当我在这里时,我无法得到

input.isAlpha() 

也可以工作。

【问题讨论】:

  • 您可以使用的正则表达式的规范列表位于 docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html - 这不是一个教程,但周围还有很多其他教程。
  • isAlpha 是 C。在 Java 中它被称为 isLetter。阅读java2s.com/Tutorial/Java/0120__Development/…
  • 我想在字符串上使用 isAlpha(或 java 中的任何内容),而不是字符。我的编译器告诉我 isLetter 仅适用于字符。谢谢你的链接。
  • 好吧,我给你的链接会告诉你一种方法。不是唯一的方法,而是一种方法。
  • 谢谢!我希望在 Java 中有一个方法,但这也可以。

标签: java string split


【解决方案1】:

使用括号

for (String words : input.split("[\\s.,]+"))

当您想要括号中的任何字符时使用括号,+ 表示字符可以组合一次或多次。创建一个单独的分隔符,即space and periodcomma and space

【讨论】:

    【解决方案2】:

    您可以使用此正则表达式进行拆分

    input.split("\\s+|.+|,+")
    

    或者简单地说:

    input.split("[\\s.,]+")
    

    记住a dot doesn't have to be escaped inside square brackets

    【讨论】:

    • 很好奇,为什么 \\s+ 是空格的正则表达式,\\.句号,但逗号你只需要逗号?
    • 句号是正则表达式中的特殊字符; `\` 是转义序列。正如我所说,尝试更多地了解正则表达式。找教程什么的。
    • @Dariusz 为什么要逃避.,如果你已经通过将它放在[] 中来逃避它?
    • . 不需要在括号内转义
    • 方括号中的\\s 后面不需要+
    【解决方案3】:

    你可以用这个

    mySring = "abc==abc++abc==bc++abc";
    String[] splitString = myString.split("\\W+");
    

    正则表达式 \W+ ---> 它将根据非单词字符分割字符串。

    【讨论】:

      猜你喜欢
      • 2014-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-09
      • 2014-01-28
      • 2019-05-08
      • 1970-01-01
      相关资源
      最近更新 更多