如何从字符串中删除某些单词
问题描述:
我想从字符串中删除某些单词。我想删除的词是:“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);
}
}
但这似乎并没有工作。我的程序需要一个字符串行,并循环移动行。
对于以下输入:
我的名字是约翰
MY NAME IS AN山姆
MY NAME IS或RAW
输出是:
- 山姆我的名字是
- 是山姆我的名字
- 是j翁我的名字
- 是生我的名字
- 约翰我的名字是
- 我的名字是山姆
- 我的名字是约翰
- 我的名字是生
- 名字是山姆我
- 名字是约翰我
- 名是原我的
- 生我的名字是
- SAM我名称是
为什么会发生这种情况?我该如何解决这个问题?请帮帮我。谢谢...!!!
答
说实话,我并没有完全理解你的问题,但首先尝试简单的方法,没有正则表达式,你的问题可能在那里。然后根据需要进行优化。
例如,尝试这样的事情。
无效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。
答
嘿使用这样的 -
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);
}
}
把第一和然后的然后一个。如果你把一个以前的它将取代的一个所有次数包括含有的有“”字,只留是ñ。
感谢您的回答。有些已被纠正,但仍然如果我输入“我的名字是约翰一个”的输入将输出“我的名字是约翰”。 – 2012-04-02 16:02:46