我正在尝试计算通过字符串传递的文件中的单词数。我也在显示字符串以确保输出正确,我得到文件的确切内容。
但是,我的字数统计方法将前一行的最后一个字和下一行的第一个字计为一个字。
示例:“测试单词(换行符)测试单词”输出为“测试单词测试单词”
尝试在我的代码中添加“\ n”,它现在显示正确的输出但仍然像以前一样计算。
任何帮助都将不胜感激。
答案 0 :(得分:2)
您可以更改检查空格的条件以包含新行
if ((line.charAt(i) == ' ' || line.charAt(i) == '\n') && line.charAt(i + 1) != ' ')
答案 1 :(得分:2)
/* * Counting number of words using regular expression. */
public int countWord(String word) {
return word.isEmpty() ? 0 : word.split("\\s+").length;
}
答案 2 :(得分:0)
您还可以使用正则表达式进行计数。
+-----------------+-------------+------------+------------+
| mytable.ip | mytable.dt | mytable.tm | mytable.tz |
+-----------------+-------------+------------+------------+
| 123.123.123.123 | 26/Apr/2000 | 00:23:48 | -0400 |
+-----------------+-------------+------------+------------+
答案 3 :(得分:0)
这就是为什么“测试词(换行)测试词”输出为“测试词测试词”的原因
in.nextLine()将该行作为String返回,不包括该行末尾的换行符。见https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html#nextLine--
虽然跟踪单词计数而不是将行附加到String然后在结尾处计数会更有效。伪代码将是这样的:
int wordCount = 0
while (file has more lines) {
line = line.trim()
int wordsOnLine = numberOfSpacesPlusOne(line)
wordCount += wordsOnLine
}
答案 4 :(得分:0)
为什么不这样做
String sentence = "This is a sentence.";
String[] words = sentence.split(" ");
System.out.println(words.length);
将你的字符串拆分为" "并计算单词。