0

文字列から特定の単語を削除する方法を理解するのに少し苦労しています。基本的に私は文字列を持っています。文字列内のすべての単語を、配列内にある事前設定された数の単語と比較します。文字列内の単語が事前設定された単語の 1 つと一致する場合、その単語を文字列から削除します。

例として、「テスト文です」という文字列があります。メソッドを実行した後、{"test", "sentence"} という単語を含む配列が必要です。これまでのところ...

編集 基本的に問題は何も変わらないことです、私は {"is", "a", "test", "sentence"} で終わります

    private void fillerWords(){

    String[] commonWords = {"the","of","to","and","a","in","is","it","you","that","he","was","for","on","are","with","as","i"};
    List <String>wordList = new ArrayList<String>(Arrays.asList(commonWords)); 

    //Split words in sentence up by word, put them into array
    String s = "is a test sentance";
    String[] tArray = s.split(" ");
    List <String>list = new ArrayList<String>(Arrays.asList(tArray ));    

    //take out words
    for(int i=0; i<list.size(); i++){
        //Check to see if a sentence word is a common word, if so remove word
        for(int c=0; c<wordList.size(); c++){
            if(wordList.get(c) == list.get(i)){
                list.remove(i);
            }//end if
        }//end for
    }//end for


    for(int x=0; x<list.size(); x++){
        System.out.printf("%s  %s \n", x, list.get(x));
    }

}

}

4

4 に答える 4

3

問題は、リストからインデックス i を削除してから i をインクリメントしているため、削除するたびに 1 つスキップしていることです。おそらく、出力と呼ばれる別のリストを作成し、悪い単語をヒットしたときに「リスト」から削除する代わりに、良い単語をヒットしたときに「出力」に追加するだけです。

また、フェイルセーフが言ったように、「==」を使用して文字列を比較することはできません。比較するには string1.equals(string2) を使用する必要があります。

また、あまり変更せずに修正する簡単な方法を次に示します。

次のように比較ブロックを変更します。

if(wordList.get(c).equals(list.get(i))){
   list.remove(i);
   i--;
   break;
}
于 2012-07-27T20:23:38.400 に答える
2

removeAll()別のコレクションに存在する要素を削除するために使用します。

list.removeAll(wordlist)

listに存在するからすべての要素を削除しwordlistます。

(あなたのコードも動作するはずですが、より短い方法です)

于 2012-07-27T20:22:29.317 に答える
2

文字列を比較することはできません

if(wordList.get(c) == list.get(i)){
            list.remove(i);
        }//end if

あなたがする必要があります:

if(wordList.get(c).equals(list.get(i))){
            list.remove(i);
        }//end if
于 2012-07-27T20:23:37.637 に答える
0
    String regex;
    regex = "\\s*\\bword\\b\\s*";//word must to be removed.
    while(out.contains("word"))
    out = out.replaceAll(regex, "");//out if input String and finnaly is out..
于 2015-10-11T22:00:10.763 に答える