我正在写一个程序,计算任何文本文件中每个单词的字数。这个文件的内容以前是不知道的。
所需输出:例如[book][book!][书-][书?][书,][书的]和喜欢被视为相同的词计数。
当前输出:book=2,book.=1,book--=1,book?=5,book's=3,book,=2,book=1
当我真的在找书的时候=15
try(Stream<String> fileContents = Files.lines(filePath)){
Function<String, Stream<String>> splitIntoWords = line -> Pattern.compile(" ").splitAsStream(line);
Map<String, Long> wordFrequency = fileContents.flatMap(splitIntoWords)
.filter(word -> word.trim().length() > 4) //Consider only Words with length greater than 4
.map(String::toLowerCase)
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(wordFrequency);
}
我不想硬编码特定的符号和标点符号在regex中忽略,因为文件的确切内容是未知的。
有没有通用的方法来实现这一点?
1条答案
按热度按时间wvt8vs2t1#
Pattern.compile("\\P{L}+").split ...
这将分裂在任何字符(或一个以上),这不是一个字母的任何语言。我想这会让你得到你想要的?