0

特定のディレクトリに一連のファイルがあります。

ディレクトリ内のすべてのファイル (テキスト ファイル) からコンテンツを取得した後、文字列のリストができました。

各文字列要素は、各ファイルから取得されたコンテンツを表します。したがって、リストの最初の String 要素は、最初のファイルの内容を表します。

ここで、文字列を分割して単語を取得したいと思います。(後で単語は文字列の配列に格納されます) 1) 単語は、単一のスペース/複数のスペースで区切ることができます。2) 文は「.」で終わるため、「.」の後に新しい単語を開始できます。3) '\n' の後に新しい単語を開始できます

では、誰かが split() メソッドに適合する正規表現を提案できますか?

4

4 に答える 4

4

おそらく、StringTokenizerクラスはあなたのニーズにより適しています。コンストラクターは、トークン化する文字列と区切り文字のリスト (この場合は、スペース、.、および改行) を受け取ります。

于 2012-04-13T10:58:17.127 に答える
1
String[] result = myString.split("[\\.\\s]");
于 2012-04-13T11:19:11.593 に答える
0

これにはおそらく正規表現は必要ありません。ファイルから文字以外のすべての文字を削除し、Tokenizer を使用して各単語を読み取るだけです。

于 2012-04-13T10:58:05.330 に答える
-1

これにはトークンを使用することをお勧めします...単純に各キャラクターを調べて、キャラクターが何であるかに基づいて何をすべきかを決定します. ここに疑似コードがあります

string word = "";

while ( EOF ){

    char = getNextChar()

    if ( char not space or full-stop ){
        append the char to the word
    }
    else {
        if ( the word is empty ){ continue /* ignore multi space */ }
        else {
            add the word to an array of words
            reset the word to ""
        }
    }
}

このようにして、データの処理方法を完全に制御できます。正規表現ルールに含めるクレイジーなシナリオについて心配する必要はありません。何よりも、これが最も効率的な方法であり (正規表現よりも優れています)、データを 1 回だけパスします。

于 2012-04-13T11:03:54.440 に答える