hello-world how are you?

应该导致

hello
-
world
how
are
you
?


这是我尝试的代码

String str = "Hello-world how are you?";
Arrays.stream(str.split("\\b+")).forEach(System.out::println);

最佳答案

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

String str = "hello-world how are you?";
Arrays.stream(str.split("\\p{javaWhitespace}+|(?=\\p{P})|(?<=\\p{P})")).forEach(System.err::println);


在这里\\p{Z}+|(?=\\p{P})|(?<=\\p{P})在任何unicode空格上分割,或者借助前瞻性断言,断言前一个字符还是下一个字符是标点字符。

RegEx Demo

输出:

hello
-
world
how
are
you
?

关于java - Java按空格和标点符号拆分字符串,但结果中仅包含标点符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43286467/

10-12 02:53