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

时间:2012-04-02 15:46:52

标签: java

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

输出是:

  1. 一个山姆,我的名字是
  2. 是一个山姆我的名字
  3. 是约翰我的名字
  4. 是我的名字
  5. 约翰我的名字是
  6. 我的名字是山姆
  7. 我的名字是约翰
  8. 我的名字是原始的
  9. 名字是山姆我的
  10. 名字是john my
  11. name is raw my
  12. raw我的名字是
  13. 山姆,我的名字是
  14. 为什么会这样?我怎么能纠正这个?请帮我。谢谢...!

2 个答案:

答案 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