我需要将一些句子分成单词。
例如:
Upper sentence.
Lower sentence. And some text.
我是这样做的:
String[] words = text.split("(\\s+|[^.]+$)");
但我得到的输出是:
Upper, sentence.Lower, sentence., And, some, text.
应该是这样的:
Upper, sentence., Lower, sentence., And, some, text.
请注意,我需要保留所有字符(。, - ?!等)
答案 0 :(得分:4)
\W+
中的匹配一个或多个非单词字符。
http://www.vogella.com/tutorials/JavaRegularExpressions/article.html
因此,如果您想获得句子中的单词,可以使用\W+
作为分割器。
String[] words = text.split("\\W+");
这将为您提供以下输出。
Upper
sentence
Lower
sentence
And
some
text
更新:
由于您已更新了问题,因此如果要保留所有字符并按空格分割,请使用\s+
作为拆分器。
String[] words = text.split("\\s+");
我检查了以下代码块,并确认它也在使用新行。
String text = "Upper sentence.\n" +
"Lower sentence. And some text.";
String[] words = text.split("\\s+");
for (String word : words){
System.out.println(word);
}
答案 1 :(得分:1)
表达式\\s+
表示“1个或多个空白字符”。我认为您需要做的是用\\s*
替换它,这意味着“零个或多个空白字符”。
答案 2 :(得分:1)
您可以使用以下代码行将字符串拆分为子字符串:
String[] result = speech.split("\\s");
答案 3 :(得分:1)
替换点,逗号等...用于空格并将其拆分为空格
String text = "hello.world this is.a sentence.";
String[] list = text.replaceAll("\\.", " " ).split("\\s+");
System.out.println(new ArrayList<>(Arrays.asList(list)));
结果:[hello, world, this, is, a, sentence]
编辑:
如果只是针对点,这个技巧应该有用......
String text = "hello.world this is.a sentence.";
String[] list = text.replaceAll("\\.", ". " ).split("\\s+");
System.out.println(new ArrayList<>(Arrays.asList(list)));
[你好。,世界,这,是。,a,句子。]
答案 4 :(得分:1)
更新问题的简单答案
String text = "Upper sentence.\n"+
"Lower sentence. And some text.";
[只是空格]一个或多个OR新行一个或多个
String[] arr1 = text.split("[ ]+|\n+");
System.out.println(Arrays.toString(arr1));
结果:
[Upper, sentence., Lower, sentence., And, some, text.]