2012-04-02 123 views
1

我想從字符串中刪除某些單詞。我想刪除的詞是:「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我名稱是

爲什麼會發生這種情況?我該如何解決這個問題?請幫幫我。謝謝...!!!

回答

2

說實話,我並沒有完全理解你的問題,但首先嚐試簡單的方法,沒有正則表達式,你的問題可能在那裏。然後根據需要進行優化。

例如,嘗試這樣的事情。

無效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

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

}

把第一然後然後一個。如果你把一個以前將取代的一個所有次數包括含有有「」字,只留是ñ

相關問題