Java字符串分割 - 多个字符分隔符

34
我希望您能基于可能的分隔符(如逗号、冒号、分号、句号、空格、连字符等)解析整个文件。假设我有一个虚构的字符串行“Hi,X How-how are:any you?”,我应该得到一个输出数组,其中包含Hi,X,How,how,are,any和you。
如何在String.split方法中指定所有这些分隔符?
提前感谢您的回答。
1个回答

37

String.split方法需要使用正则表达式,这里你需要使用非单词字符(正则表达式\W)作为分隔符,所以简单的写法是:

String input = "Hi,X How-how are:any you?";
String[] parts = input.split("[\\W]");

如果你想更加明确,你可以在表达式中使用精确的字符:

String[] parts = input.split("[,\\s\\-:\\?]");

为什么上面的表达式中使用了或运算符?它们是必需的吗? - Hovercraft Full Of Eels
1
我的个人偏好是展示正则表达式,而不带有不必要的混乱。你的情况可能会有所不同。 - Hovercraft Full Of Eels
3
请查看此处的教程部分:预定义字符类。整个教程都值得一读。当您完成这个教程后,可以进阶到我最喜欢的这个教程 - Hovercraft Full Of Eels
1
@MarkElliot 我非常确定该字符类将匹配管道(|)字符,而不是将它们视为“或”指令。在这种情况下,这并不是真正的问题,但你应该意识到它没有做你认为它在做的事情。在更复杂的代码中,它可能会导致混淆和错误。 - Samir Talwar
我在做一个项目时偶然发现了这个问题。我没有使用 [] 运行它,但它也能正常运行(我运行的是 s.split(" |\n") )。那这些方括号应该做什么?他们是必要的吗? - JR Smith
显示剩余2条评论

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