0

テキストファイルの単語を格納する配列リストを作成しました。ただし、ファイル内の単語から文字のみを取得して小文字に戻し、単語内またはその周囲の句読点をすべて削除する別の配列リストを作成する必要があります。つまり、基本的には、言及されているすべての要素が削除されたすべての単語が復元されます。

        List<String> grams = new ArrayList<String>();
        for(String gram : words){
            gram = gram.trim();
            for(int i=0,int l=gram.size();i<l;++i){ //this line is wrong
                const String punChars = ",[]:'-!_().?\/~"; //this line is wrong
                if(gram.indexOf(i) != -1){ //this line is wrong
                    gram.remove(i); //this line is wrong
                }
                gram.add(gram.remove(0).toLowerCase()); //this line is wrong
            }
        }

基本的に、配列内の選択文字列の各文字を新しい配列リストに配置するときに読み取ろうとしています。その後、句読点が含まれている場合は削除します。constを使用してこれを実行して保存します。句読点の値を入力してから、ifステートメントを使用して文字列をチェックし、文字列内のその位置を削除します。

次に、単語を追加してみますが、大文字を削除して小文字に変更します。

私は少し迷っていて、ここでこのビットを使って何をしているのかわかりません...

4

2 に答える 2

2

あなたの問題の私の解釈は、単語のリストを調べて小文字に変換し、句読点を削除してから別のリストに挿入したいということですか? その場合、元のリストを変更する必要がある理由がわかりません。次のようなことができます。

for(String gram : words) {
    gram = gram.trim(); //trim string
    gram = gram.replaceAll("[^A-Za-z0-9]", ""); //remove any non alphanumeric characters
    grams.add(gram); //add to the grams list
}
于 2013-03-12T20:31:38.463 に答える
0

次のように、文字列内の各文字を循環してみませんか。

for (char c : gram.toCharArray()) {
  ...
}

次に、文字が除外文字のリストにあるかどうかを確認し、そうでない場合は小文字にして出力リストに追加しますか?

于 2013-03-12T20:34:29.050 に答える