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

Java 如何从字符串中删除一些单词,java,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++) {

我想从字符串中删除某些单词。我想删除的字眼是:“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);            
        }
    }
void doNoiseEliminator(矢量输入){
非均匀线=新向量();
字符串温度;
对于(int i=0;i
但这似乎不起作用。我的程序采用一条字符串行,并对该行进行循环移位

对于以下输入:

我叫约翰
我的名字是山姆
我的名字是OR RAW

输出为:

  • 我叫山姆
  • 山姆是我的名字吗
  • 约翰是我的名字吗
  • 这是我的名字吗
  • 约翰,我的名字是
  • 我的名字是山姆
  • 我叫约翰
  • 我的名字是raw
  • 我的名字是山姆
  • 我的名字叫约翰
  • 我的名字是生的
  • 我的名字是
  • 山姆,我的名字是

  • 为什么会这样?我怎样才能纠正这个问题?请帮帮我。谢谢

    说实话,我没有完全理解你的问题,但是先试试简单的方法,没有正则表达式,你的问题可能就在那里。如果需要,就去优化它

    例如,试试这样的东西

    无效doNoiseEliminator(矢量输入){

    noNoiseLines=新向量();
    字符串温度;
    对于(int i=0;i
    当然,这不应该是最终的解决方案,它只是检查它是否有效。工作中,您可以检查/修复正则表达式或任何其他解决方案

    希望它有助于指导解决方案,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);            
    }
    
    noNoiseLines=新向量();
    字符串温度;
    对于(int i=0;i
    }


    首先放置然后放置一个然后放置一个。如果你把a放在an之前,它会将a的所有出现(包括包含an的单词)替换为“”,只剩下n

    谢谢你的回答。有些是正确的,但如果我输入“我的名字是约翰”这样的输入,输出将是“我的名字是约翰”。
     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);            
    }