字符串不等于自身有什么原因吗?我正在处理大量的字符串,而一些字符串最终并不等于它们自己。
这是一张图片,显示了我在说什么。
有任何想法吗?
已解决:在其中一个字符串的末尾附加了一个回车符 (\r)。我使用 String.length 查看每个字符串的长度,它们不同(5 和 6)。然后,我使用 String.charAt 查看了字符串。在 Chrome 中,这显示了一个空字符串 ("")。但是,空字符串不是一个虚假值。我在 FireFox 中试过这个,它显示了回车。
字符串不等于自身有什么原因吗?我正在处理大量的字符串,而一些字符串最终并不等于它们自己。
这是一张图片,显示了我在说什么。
有任何想法吗?
已解决:在其中一个字符串的末尾附加了一个回车符 (\r)。我使用 String.length 查看每个字符串的长度,它们不同(5 和 6)。然后,我使用 String.charAt 查看了字符串。在 Chrome 中,这显示了一个空字符串 ("")。但是,空字符串不是一个虚假值。我在 FireFox 中试过这个,它显示了回车。
在任何一种语言中,如果一个字符串包含一些不可读的字符,而另一个字符串则不会,即使它们在人类看来是相等的,它们也会有所不同。
尝试打印它们的长度并按字符打印
可能其中一个字符是 ascii 等价物的 UTF-8 表示。
这是一个音译 jquery 插件:http ://code.google.com/p/jquery-transliteration-plugin/wiki/Usage
最后也可能有一个控制序列,如 BOM。
您可能正在将字符串值类型与字符串进行比较。
请参阅javascript 字符串类型和字符串对象之间的区别?
解决方案:使用 string.valueOf() 或使用双等号而不是三等号,让 javascript 将 String 对象强制转换为字符串值。
从我的控制台 a = new String("asdf"); b = "asdf"; a === b; // 假 a == b; // true a.valueOf() === b.valueOf(); // 真的