为什么wordCount
在下面的代码中最终为1而不是5?
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WordCount {
public static void main(String[] args) {
final Pattern wordCountRegularExpression = Pattern.compile("\\S+");
final Matcher matcher = wordCountRegularExpression
.matcher("one two three four five");
int wordCount = 0;
while (matcher.find()) {
wordCount++;
}
System.out.println("wordCount: " + wordCount);
}
}
模式“\ S +”是否与单词匹配,因为它表示一个或多个非空格字符?
顺便说一下:
final Pattern wordCountRegularExpression = Pattern.compile("\\b\\w+\\b");
但我仍然不明白为什么原始代码不起作用。
答案 0 :(得分:1)
模式“\ S +”是否与单词匹配,因为它表示一个或多个非空格字符?
答案 1 :(得分:1)
使用
import java.util.regex.*;
在java 7中,有以下模式:
Pattern.compile("\\S+");
不会计算单词,而是空格。
所以,输入应该返回4:“一二三四五”,因为它有4个空格。
答案 2 :(得分:0)
这取决于你用什么来分隔单词。当我将你的问题中的代码复制到我的编辑器中时,我会看到简单的旧空格(U+0020
),但是当我查看页面时,我看到了不间断的空格(U+00A0
)。 Java不会将NBSP识别为空白字符。
现在的问题是为什么我在字符串文字中看到NBSP,但在其他地方?为什么我复制/粘贴时会将它们转换为空格?还有其他人看到了吗?