在Java中使用多个分隔符进行.split操作

5

目前我的代码只能通过空格分隔单词,但我也想通过“.”和“,”来分隔。以下是我的当前代码:

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

例如,如果用户输入“面包,牛奶,鸡蛋”或“Um...awkss”,它会将其视为一个单词,我希望每个单词都是独立的单词。
顺便说一句,我无法得到
input.isAlpha() 

也可以工作。


您可以使用的正则表达式的规范列表位于http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html - 它不是教程,但周围有很多其他教程。 - Dawood ibn Kareem
isAlpha 是 C 语言中的函数。在 Java 中,它被称为 isLetter。请阅读 http://www.java2s.com/Tutorial/Java/0120__Development/ChecksiftheStringcontainsonlyunicodeletters.htm。 - Dawood ibn Kareem
我想在字符串上使用isAlpha(或者Java中的其他内容),而不是char。我的编译器告诉我isLetter仅适用于chars。顺便说一句,谢谢提供链接。 - Bottlecaps
好的,我给你的链接会告诉你一种做法。不是唯一的方法,但是其中一种方法。 - Dawood ibn Kareem
谢谢!我希望Java中有一个方法,但那也可以工作。 - Bottlecaps
3个回答

8
你可以使用这个正则表达式进行拆分。
input.split("\\s+|.+|,+")

或者简单地说:

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

请记住,在方括号内部不需要转义圆点(参考)。


好奇,为什么\s+是空格的正则表达式,\.是句号的正则表达式,但对于逗号,你只需要逗号? - Bottlecaps
句号是正则表达式中的特殊字符;\\是转义序列。就像我说的,尽量多了解正则表达式。找一个教程或者其他资料来学习吧。 - Dariusz
@Dariusz,如果您已经将“.”放在“[]”中,请问为什么还要转义它? - Pshemo
方括号内不需要转义. - Paul Samsotha
2
在方括号中的\\s后面不需要加上+ - Dawood ibn Kareem
@Spork 如果你在寻找正则表达式教程建议,那么最好的之一是http://www.regular-expressions.info/tutorial.html。 - Pshemo

5
使用括号。
for (String words : input.split("[\\s.,]+"))

方括号用于表示你想要匹配其中任意一个字符,+ 表示这些字符可以被组合一次或多次,以创建一个单一的分隔符,例如 空格和句号 或者 逗号和空格


0

你可以使用这个

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接