0

ユーザーがコンソールに文字列を入力するクライアント/サーバープログラミングに関するプログラムを作成しています.txtファイルのすべての行でその文字列を検索し、その特定の文字列が存在する行全体を出力します。

これは、StringTokenizer が使用されるコードの一部です。

String line = "";
boolean wordFound = false;

while((line = bufRead.readLine()) != null) {
    StringTokenizer str = new StringTokenizer(line, ", .();:-?!'");

    while(str.hasMoreTokens()) {
        String next = str.nextToken();
        if(next.equalsIgnoreCase(targetWord)) {
            wordFound = true;
            output = line;
            break;
        }
    }

    if(wordFound) break;
    else output = "Quote not found.";
}    

問題は、"you're" や "it's my birthday" などの文字列 (アポストロフィやスペースを使用) を検索すると、ブール型の wordFound に偽の値が返されることです。区切り文字 " " と "'" を削除しようとしましたが、それでも機能しません。

私はかつてコードを修正し、boolean wordFound に対して真の値を取得することがありましたが、今では大文字と小文字を区別していないようです。たとえば、「you're」と入力すると、wordFound が true になります。しかし、「You're」または「yOu'Re」に変更しても、wordFound は依然として false です。

誰かがこの問題の解決策を見つけるのを手伝ってくれますか? ありがとう。

4

1 に答える 1

1

文字列トークナイザーは次のようにする必要があります。

StringTokenizer str = new StringTokenizer(line, ", .();:-?!\"");

あなたのコードでは、 StringTokenizer(line, ", .();:-?!'"); ie'の代わりに があり"you're"、これはテキストをyouandにトークン化していますre"

于 2012-01-10T18:12:04.327 に答える