如何从字符串中删除某些单词

问题描述:

我想从字符串中删除某些单词。我想删除的词是:“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

输出是:

  1. 山姆我的名字是
  2. 是山姆我的名字
  3. 是j翁我的名字
  4. 是生我的名字
  5. 约翰我的名字是
  6. 我的名字是山姆
  7. 我的名字是约翰
  8. 我的名字是生
  9. 名字是山姆我
  10. 名字是约翰我
  11. 名是原我的
  12. 生我的名字是
  13. 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。

+0

感谢您的回答。有些已被纠正,但仍然如果我输入“我的名字是约翰一个”的输入将输出“我的名字是约翰”。 – 2012-04-02 16:02:46

嘿使用这样的 -

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);    
} 

}

把第一然后然后一个。如果你把一个以前将取代的一个所有次数包括含有有“”字,只留是ñ