小智 6
我不认为正则表达式可以完全解决您的问题.
你想要
将一个字符串拆分成单词,一个正则表达式可以做一个非常简单的单词定义,"用空格或标点分隔的字符串部分",即使你只是坚持英文文本也不是一个很好的定义
计算从步骤1派生的每个单词的出现次数.为此,您必须存储某种映射,并且正则表达式既不存储也不计数.
一种可行的方法可能是
如果您的输入仅限于英语,您仍然需要考虑您希望算法的行为方式,例如它们是< - >它们是等等和复合词.添加其他语言以进行其他类型的麻烦(写同一个单词的不同方式,分成部分的单词,写作的差异取决于单词出现在句子中的位置等)
我会将你的任务分成a)识别单词和b)计算文本中每个唯一单词的数量.
a)可以通过使用正则表达式分割文本来解决.b)可以通过使用a)的结果构建地图来解决.
String text = "I like good mules. Mules are good :)";
String[] words = text.split("([\\W\\s]+)");
Map<String, Integer> counts = new HashMap<String, Integer>();
for (String word: words) {
if (counts.containsKey(word)) {
counts.put(word, counts.get(word) + 1);
} else {
counts.put(word, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
结果:{Mules = 1,= 1,良好= 2,骡子= 1,喜欢= 1,I = 1}
| 归档时间: |
|
| 查看次数: |
9338 次 |
| 最近记录: |