JavaScript中两个看似相等的字符串不相等

时间:2019-01-15 08:53:20

标签: javascript string

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

'! Invite to Troy Florida Event'
'! Invite to Troy Florida Event'
false

以下是创建输出的代码:

"\'"+ String(list_name) + 
"\'<BR/>\'" + 
String(dialer_list_selections[5][0]) +  "\'<BR/>" + 
String(String(list_name) === String(dialer_list_selections[5][0]))

有什么主意我该如何调试它以及发生了什么事情?

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

通过字符代码打印字符串字符代码确实表明它们确实有所不同。

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

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

1 个答案:

答案 0 :(得分:1)

您的问题似乎是两个具有不同空格字符的相似字符串的比较。为什么不比较之前删除alls空格字符?您可以使用somestring.replace(/\s+/g, "")之类的正则表达式来做到这一点。

因此,您的测试成为

String(
    String(list_name.replace(/\s+/g, "")) === 
    String(dialer_list_selections[5][0].replace(/\s+/g, ""))
)