我想从字符串中删除某些字词。我要删除的词是:“a”,“an”,“and”,“the”,“of”和“or”。
我使用了以下方法:
void doNoiseEliminator(Vector<String> input){
noNoiseLines = new Vector<String>();
String temp;
for(int i = 0; i < input.size(); i++) {
String regex = "(\\sand\\s)|(\\sa\\s)|(\\sthe\\s)|(\\san\\s)|(\\sof\\s)|(\\sor\\s)";
temp = input.get(i).replaceAll(regex, " ");
noNoiseLines.add(temp);
}
}
但这似乎不起作用。我的程序采用字符串行并循环移动该行。
对于以下输入:
我的名字是约翰 我的名字是SAM 我的名字是生还是
输出是:
为什么会这样?我怎么能纠正这个?请帮我。谢谢...!
答案 0 :(得分:2)
说实话,我并没有完全理解你的问题,但首先尝试简单的方法,没有正则表达式,你的问题可能就在那里。然后根据需要进行优化。
例如,尝试这样的事情。
void doNoiseEliminator(向量输入){
noNoiseLines = new Vector<String>();
String temp;
for(int i = 0; i < input.size(); i++) {
temp = input.get(i).replaceAll(" a ", " ").replaceAll(" an ", " ").replaceAll(" and ", " ").replaceAll(" the ", " ").replaceAll(" of ", " ").replaceAll(" or ", " ");
noNoiseLines.add(temp);
}
}
当然这不应该是最终的解决方案,只是为了检查它是否有效。工作,你可以去检查/修复正则表达式或任何其他解决方案。
希望它有助于指导解决方案,cya。
答案 1 :(得分:1)
嘿这样使用 -
noNoiseLines = new Vector<String>();
String temp;
for(int i = 0; i < input.size(); i++) {
temp = input.get(i).replaceAll(" and|an|a|the|of|or ", " ");
noNoiseLines.add(temp);
}
}
首先输入和,然后输入 ,然后输入 a 。如果您在 之前加上 a ,它将替换 a 的所有内容,包括包含 a 的单词和“”保持 n 。