1

现在在尝试匹配两个 Scala 字符串时处理一个奇怪的问题。在尝试确定以下两个字符串是否相同时:

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

斯卡拉回归false。因此,如果我执行以下操作,if(hash1 == hash2)它会返回false.

我怀疑这是空格或字符编码问题,因为哈希匹配仅在尝试匹配在不同操作系统的计算机上生成的哈希时才会失败。我已经尝试使用正则表达式去除空格,但仍然失败。

我忽略了什么?有没有更好的方法来清理和匹配 Scala 中的哈希?

更新

比较两个字符串后,Scala 认为hash2单个字符比hash1. 所以我在两个哈希上运行了以下函数.trim.replaceAll("""(?m)\s+$""", ""):不过,它说它们不一样。还有哪些其他角色可能会干扰?

4

1 回答 1

0

我已经找到了这个特定问题的原因。显然,在 Macintosh 上处理字符串时,\r除了任何换行符外,还会添加。即使换行符不会在控制台上打印出来,它们仍然在字符串中。

补救措施是执行以下操作:.trim.replaceAll("\r", "")

现在两个字符串都匹配。

于 2013-02-14T18:54:57.000 回答