[英]JavaScript: Strings are equal but comparing returns false
我目前正在為 Textual IRC 開發主題,我想將“主題是 ...”消息與頻道主題欄中顯示的主題進行比較,如果相同,則刪除它們。
導致問題的主題中包含 Umlaute 和 URI,如下所示:
++ Frische Austern ++ Nächste Sitzung: https:/some/uri/that/can/contain/umlaute" ++
當我打印舊主題和新主題時,它們看起來完全相同,直到尾隨和前導空格(我使用了trim()
來消除它們)。
比較是用
if(oldTopic === newTopic){
// do stuff
}
我使用typeof
來確保它們都是字符串類型而不是對象
我使用replace(/ä/g, 'ae')
來消除元音
我用replace(/\\//g, '_')
去掉了我用escape()
轉義非 unicode 字符的正斜杠
不幸的是,沒有一個奏效。 同樣,如果我使用console.log
來顯示兩個字符串,它們是完全相同的。 我期待一些 Unicode 的東西,你可以用不同的方式表示ä ,但替換它也不起作用。
我試過了,但我的 JavaScript 知識達到了極限。 我真的不知道為什么它不起作用。 該代碼適用於其他一些主題,既不涉及任何元音變音也不涉及 URL。
如果你們中的任何人碰巧知道答案,我將不勝感激。
提前致以親切的問候和感謝!
所以最后, https
部分之前的空白是一種不同類型的空白,而不是所有其他空白。
它不是選項卡,我嘗試了不同的正則表達式符號來獲取它( \\f
、 \\r
和其他東西),但沒有成功。
最后有效的是使用replace(/\\s/g, '')
。 \\s
還包括選項卡,但我認為,除了將空格更改為選項卡之外,可能不會有主題更改,沒有其他更改。
請記住,如果制表符和空格必須對您的情況產生影響,則此解決方案將不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.