两个看似相等的字符串在javascript中并不相等

Xit*_*d13 8 javascript string

我有 2 个字符串,我正在尝试比较它们。我用引号打印它们以确保没有空格字符。然后我使用相等运算符来查看它们是否相等。这是结果

'! Invite to Troy Florida Event'
'! Invite to Troy Florida Event'
false
Run Code Online (Sandbox Code Playgroud)

这是创建输出的代码:

"\'"+ String(list_name) + 
"\'<BR/>\'" + 
String(dialer_list_selections[5][0]) +  "\'<BR/>" + 
String(String(list_name) === String(dialer_list_selections[5][0]))
Run Code Online (Sandbox Code Playgroud)

我有什么想法可以调试这个以及发生了什么吗?

列表中的所有其他字符串都可以正常工作。

逐个字符代码打印字符串确实表明它们确实不同。

Using this code for both and strings and printing I get.
    test_string = "";
    for (index = 0; index < String(list_name).length; ++index) {
        test_string +=  "," +String(list_name).charCodeAt(index);
    }

33,32,73,110,118,105,116,101,32,116,111,32,84,114,111,121,32,70,108,111,114,105,100,97,32,69,118,101,110,116
33,32,32,73,110,118,105,116,101,32,116,111,32,84,114,111,121,32,70,108,111,114,105,100,97,32,69,118,101,110,116
Run Code Online (Sandbox Code Playgroud)

现在,如果字符串在打印时看起来相同,即使它们具有不同的 charCodes 和长度,是否有一种方法可以确保字符串比较返回 true?

Flo*_*ert 4

您的问题似乎是比较两个具有不同空白字符的相似字符串。为什么不在比较之前删除所有空白字符?您可以使用正则表达式来完成,例如somestring.replace(/\s+/g, "").

所以,你的测试就变成了

String(
    String(list_name.replace(/\s+/g, "")) === 
    String(dialer_list_selections[5][0].replace(/\s+/g, ""))
)
Run Code Online (Sandbox Code Playgroud)

  • 一般来说,删除空格会在比较时导致错误的结果。例如:“!邀请参加特洛伊佛罗里达活动”与“!邀请参加特洛伊佛罗里达活动”不同,如果没有空格,它们是相等的。这是错误的! (2认同)