在 Java 中为 .split 使用多个分隔符
Posted
技术标签:
【中文标题】在 Java 中为 .split 使用多个分隔符【英文标题】:Using multiple delimiters for .split in Java 【发布时间】: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 中有一个方法,但这也可以。
【参考方案1】:
使用括号
for (String words : input.split("[\\s.,]+"))
当您想要括号中的任何字符时使用括号,+
表示字符可以组合一次或多次。创建一个单独的分隔符,即space and period
或comma 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+ ---> 它将根据非单词字符分割字符串。
【讨论】:
以上是关于在 Java 中为 .split 使用多个分隔符的主要内容,如果未能解决你的问题,请参考以下文章