0

文字列を文字ごとに読み取るメソッドgetNextChar()があります。そして、getNextChar()によって提供される文字シーケンスの単語を取得するメソッドを書いています。

テキストには句読点やその他の特殊文字が含まれています。

すべての句読点と特殊文字を含む配列を考えています。テキストの文字を読み取るときに、その文字が配列内にあるかどうかを確認して無視します。このメソッドは、スペースを取得したときに単語を認識します。単語が以前にマップに挿入されているかどうかを確認し、その単語のカウンターを増やすことによって頻度もカウントする必要があるため、単語はコレクション(例:マップ)に保存されます。

  1. これはそれを行うための最良かつ効率的な方法ですか?私は最も効率的な方法を探しています。A
  2. 句読点と特殊文字の完全なリストはありますか?
4

4 に答える 4

1

これを行う簡単な方法があると思います。

入力ソースが何であれ、私は Scanner クラスを使用してそれを読み取ります。入力文字列を使用してこのクラスをインスタンス化し、Scanner.nextWord() メソッドを呼び出して、文字列内の次の単語を取得できます。これにより、空白が自動的にチェックされ、次の単語が返されます。次に、 String.replace("punctuation","") を使用して句読点を削除し、これらの単語を ArrayList に挿入すると、頻度などをカウントできます。

Scanner reader = new Scanner(string);
String word = reader.nextWord();
word=word.replaceAll(//code);
list.add(word);
于 2012-06-18T20:02:00.923 に答える
0

string.split() を使用して、文字列を空白で区切られた文字列の配列に分割することができます (単語用)。 また、各文字を Character.isLetterOrDigit() でチェックして、句読点を避けることもできます。(必ずしもこの順番ではありません。)

于 2012-06-18T19:57:23.840 に答える
0

文字のセットを使用すると、句読点のル​​ックアップのパフォーマンスが向上します。

Set<Character> punctationchars ....
if(punctationcahars.contains(yourChar) { ... }
于 2012-06-18T20:00:32.733 に答える
0

a を使用してsScannerを読み取るだけです。String

Scanner in = new Scanner(...);

while (in.hasNext()) {
    String word = in.next();
    /* do something with the word, check punctuation, etc. */
}
于 2012-06-18T20:01:02.937 に答える