フレーズ内の単語を検索するJavaメソッドがあり、その単語が見つかった場合は、フレーズから削除されます。単語やフレーズは何でもかまいません。それらはバリアントです。これが私のコードです:
private String removeWord( String phrase, String word ) {
phrase = phrase.replaceAll( "(?i)" + word , "" );
return phrase;
}
私が抱えている問題は、このメソッドに渡されるフレーズがあることです。
古代ローマ帝国は非常に広大で、非常に強力で野心的だったため、触れたほとんどすべてのものに強力な影響を及ぼしました。ローマの影響は非常に広範であったため、今日でも、ほとんどの西側諸国の言語、文化、法律、および政府は、ローマのマークを保持しています。
そして、テキストから見つけて削除する単語は「ローマ帝国」ですが、それを削除することはできませんでした。調査の結果、これはフレーズ内のスペースが通常のスペースではなかったことが原因であることがわかりました。Notepad ++でフレーズのテキストをコピーして同じ単語を検索したところ、それも見つかりませんでした。
添付のスクリーンショットを参照してください。5行目は私が手動で書いた行で、ご覧のとおりNotepad ++はそれを見つけることができましたが、1行目で「ローマ帝国」を見つけることができませんでした。ファイルで「ローマ帝国」を数えたところ、一度しか見つかりませんでした。
他の奇妙な空間は何ですか?!
-------------------------------------------------- --- >>編集:詳細:
このコードをJavaで記述して、2つのスペースの違いを確認しました。
char a = ' ';
char b = ' ';
System.out.println( (int) a ); // Prints 160
System.out.println( (int) b ); // Prints 32
奇妙なことに、2つのスペースはまったく同じに見えます!