8

字符串不等于自身有什么原因吗?我正在处理大量的字符串,而一些字符串最终并不等于它们自己。

这是一张图片,显示了我在说什么。

示例图像

有任何想法吗?

已解决:在其中一个字符串的末尾附加了一个回车符 (\r)。我使用 String.length 查看每个字符串的长度,它们不同(5 和 6)。然后,我使用 String.charAt 查看了字符串。在 Chrome 中,这显示了一个空字符串 ("")。但是,空字符串不是一个虚假值。我在 FireFox 中试过这个,它显示了回车。

4

3 回答 3

11

在任何一种语言中,如果一个字符串包含一些不可读的字符,而另一个字符串则不会,即使它们在人类看来是相等的,它们也会有所不同。

尝试打印它们的长度并按字符打印

于 2013-07-09T17:21:43.403 回答
3

可能其中一个字符是 ascii 等价物的 UTF-8 表示。

这是一个音译 jquery 插件:http ://code.google.com/p/jquery-transliteration-plugin/wiki/Usage

最后也可能有一个控制序列,如 BOM。

于 2013-07-09T17:21:20.887 回答
-1

您可能正在将字符串值类型与字符串进行比较。

请参阅javascript 字符串类型和字符串对象之间的区别?

解决方案:使用 string.valueOf() 或使用双等号而不是三等号,让 javascript 将 String 对象强制转换为字符串值。

从我的控制台 a = new String("asdf"); b = "asdf"; a === b; // 假 a == b; // true a.valueOf() === b.valueOf(); // 真的

于 2013-07-09T17:23:56.070 回答