以前NetBeansでのファイルのロードを実行し、比較のために文字列エントリをつかんでから削除されてダッシュで変更された予測可能な結果をもたらした:NetBeansのは、文字列比較の結果は、文字列
(の心に到達するためにsimpliflied過問題) ファイル1:UTF-8でエンコードされたファイル 2:ISO-8859-1エンコードされた
NetBeansの
String strFromFile1 = "A - B"; String strFromFile2 = "A - B";
(strFromFile1 == strFromFile2)がtrueに評価されました。
はしかし、Eclipseにプロジェクトを移動した後、私は時々、文字列値が変わってしまう気づいた、とだけ私の多くのファイルのいずれかの、時にはダッシュ取り去る - を識別可能なパターンで、():
falseに評価さECLIPSE
String strFromFile1 = "A B"; String strFromFile2 = "A - B";
(strFromFile1 == strFromFile2)。
比較は正しいですが、なぜ最初の文字列が変更されましたか? ソーステキストファイルは変更されませんでした。彼らはどちらもダッシュを含んでいた。 ただし、各ファイルの文字エンコーディングは異なります。
どうしてですか? Eclipseが特定のファイルの特定の文字を無視することを選択しているのはなぜですか?同じエンコードタイプ(ISO-8859-1、UTF-8)の他のファイルでは、この問題は発生しませんでした。
文字列を比較するために '=='を使用すると**一般的に動作しないことに注意してください。http://stackoverflow.com/q/513832/2670892 –
はい、もちろんです。私は説明を簡略化した。しかし、実際には、null値をチェックし、equals()メソッドを使用するカスタムのDeepEquals関数を使用していました。 – TinkerTenorSoftwareGuy