【发布时间】:2013-03-17 17:10:34
【问题描述】:
我正在寻找解析输入 String,并且在执行此操作时,我想检查每个单词的出现次数,同时删除所有非字母字符。
例如:
String str = "test man `xy KA XY test!.. KA kA TeST man poqw``e TES`T"
String s = line.replaceAll("[^\\p{L}\\p{N}\\ ]", "");
String[] werd = alphaLine.split(" ");
for(int i=0; i<werd.size(); i++) {
if(werd[i].toLowerCase().equals("test")) {
testcounter++;
elseif(werd[i].toLowerCase().equals("ka")) {
kacounter++;
etc..
我将检查很长时间 Strings,并将检查许多目标 Strings(在此示例中为 ka 和 test),并试图查看我是否可以在一次通过,现在看来,对于.replaceAll(),.split(),然后是 for 循环,我将遍历所有 Strings 3 次,而它可以完成一次。
【问题讨论】:
-
我不会害怕三个循环。不过,请查看
StreamTokenizers。 -
有很好的数据结构,经过良好测试的实现,例如:code.google.com/p/patricia-trie