JavaScript: 字符串相等但比较 returns false

JavaScript: Strings are equal but comparing returns false

我目前正在为文本 IRC 开发主题,我想将 "Topic is ..." 消息与频道主题栏中显示的主题进行比较,如果相同则删除它们。

导致问题的主题同时包含变音符号和 URI,如下所示:

++ Frische Austern ++ Nächste Sitzung: https:/some/uri/that/can/contain/umlaute" ++

当我打印旧主题和新主题时,它们看起来完全一样,直到尾随和前导空格(我使用 trim() 来消除它们)。

进行比较
if(oldTopic === newTopic){
    // do stuff
}

到目前为止我尝试了什么

类型检查

我使用 typeof 来确保它们都是 string 类型而不是 Object

元音消除

我用replace(/ä/g, 'ae')消除了元音变音

URL淘汰

我用 replace(/\//g, '_') 去掉了正斜杠 我使用 escape() 转义非 unicode 字符

不幸的是 none 它起作用了。同样,如果我使用 console.log 来显示两个字符串,它们将完全相同。我期待一些 Unicode 的东西,你可以用不同的方式表示 ä,但替换它也不起作用。

我试过了,但我已经达到了我的 JavaScript 知识的极限。我真的不知道为什么它不起作用。该代码适用于其他一些主题,既不涉及任何元音变音也不涉及 URL.

如果你们中有人碰巧知道答案,我将不胜感激。

提前致以诚挚的问候和感谢!

所以最后 https 部分之前的空格是一种不同于其他所有空格的空格。

它不是一个选项卡,我尝试了不同的正则表达式符号来获取它(\f\r 等等),但没有成功。

最终起作用的是使用 replace(/\s/g, '')\s 也涵盖制表符,但我认为,除了将空格更改为制表符外,可能不会有任何其他变化的主题更改。

请记住,如果制表符和空格必须对您的情况产生影响,则此解决方案将行不通。