1

現在、2つのScala文字列を一致させようとするときに奇妙な問題に対処しています。次の2つの文字列が同じであるかどうかを判断しようとする場合:

SM8lz5IEIWs7TUhR3ke27pnY3XsjojxqaMEg+ARCGs1nm3sVkwA+CM+XJfdsUxqzqH7LZdkflvny z621tYkmXA==SM8lz5IEIWs7TUhR3ke27pnY3XsjojxqaMEg+ARCGs1nm3sVkwA+CM+XJfdsUxqzqH7LZdkflvny z621tYkmXA==

Scalaはを返しますfalse。したがって、次のようif(hash1 == hash2)にすると、が返されますfalse

別のオペレーティングシステムのコンピューターで生成されたハッシュを照合しようとした場合にのみハッシュ照合が失敗するため、これは空白または文字エンコードの問題のいずれかであると思われます。正規表現を使用して空白を削除しようとしましたが、それでも失敗しました。

私は何を見落としましたか?そして、Scalaでハッシュをクリーンアップして一致させるためのより良い方法はありますか?

アップデート

2つの文字列を比較した後、Scalaは。hash2よりも長い1文字であると考えていhash1ます。そこで、両方のハッシュで次の関数を実行しました.trim.replaceAll("""(?m)\s+$""", "")。それでも、それは彼らが同じではないと言っています。他にどのようなキャラクターが干渉している可能性がありますか?

4

1 に答える 1

0

この特定の問題の原因を発見しました。どうやら Macintosh で文字列を処理する場合、\r改行に加えて が追加されます。改行文字はコンソールに出力されませんが、それでも文字列内にあります。

解決策は、次のことを行うことでした。.trim.replaceAll("\r", "")

そして今、両方の文字列が一致します。

于 2013-02-14T18:54:57.000 に答える