JavaScript:字符串相等但比较返回false

时间:2016-09-25 16:08:23

标签: javascript string string-comparison non-ascii-characters

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

导致问题的主题包括Umlaute和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')来消除Umlaute

URL消除

我使用replace(/\//g, '_')来摆脱正斜杠 我使用escape()来转义非unicode字符

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

我已经尝试但是我的JavaScript知识达到了极限。我真的不知道为什么它不起作用。该代码已经处理了其他一些主题,既没有涉及任何Umlaute也没有URL。

如果你们中的任何一个碰巧知道答案,我会非常感激。

亲切的问候和提前谢谢!

1 个答案:

答案 0 :(得分:1)

所以最后https部分之前的空白是一种不同类型的空白,而不是其他所有空格。

它不是一个标签,我尝试了不同的正则表达式符号来获取它(\f\r和东西),但它没有成功。

最终使用的是replace(/\s/g, '')\s也涵盖了标签,但我认为,除了将空格更改为标签之外,可能无法进行主题更改,没有其他更改。

请记住,如果标签和空格必须对您的情况产生影响,那么此解决方案将无法正常工作。