为什么字符串不能与自己相等?我正在处理大量的字符串,最后一些字符串不等于它们。
这是一张显示我正在谈论的内容的图片。
有什么想法吗?
解决: 有一个回车符(\ r)连接到其中一个字符串的末尾。我使用String.length来查看每个字符串的长度,它们不同(5和6)。然后我使用String.charAt查看了字符串。在Chrome中,这显示一个空字符串(“”)。但是,空字符串不是虚假值。我在FireFox中尝试了这个,它显示了回车。
答案 0 :(得分:10)
在任何语言中,如果一个字符串包含一些不可读的字符,而另一个字符串不包含它们,即使它们看起来与人类相同也是如此。
尝试打印长度并打印char-to-char
答案 1 :(得分:3)
可能是其中一个字符是ascii等价物的UTF-8表示。
这是一个音译jquery插件:http://code.google.com/p/jquery-transliteration-plugin/wiki/Usage
最后还可能有一个控制序列,如BOM。
答案 2 :(得分:-1)
您可能需要将字符串值类型与字符串进行比较。
请参阅Difference between the javascript String Type and String Object?
解决方案:使用string.valueOf()或使用double equals而不是triple,让javascript将String对象强制转换为字符串值。
从我的控制台 a = new String(" asdf"); b =" asdf&#34 ;; a === b; //假 a == b; //真的 a.valueOf()=== b.valueOf(); // true