这怎么可能:
var string1 = "", string2 = "";
//comparing the charCode
console.log(string1.charCodeAt(0) === string2.charCodeAt(0)); //true
//comparing the character
console.log(string1 === string2.substring(0,1)); //false
//This is giving me a headache.
<子> http://jsfiddle.net/DerekL/B9Xdk/ 子>
如果两个字符串中的字符代码相同,则通过比较字符本身应返回true
。当我放入a
和ab
时,确实如此。但是当我输入这些字符串时,它就会破坏。
有些人说这可能是造成问题的编码。但是因为当字符串文字中只有一个字符时它完全正常,我认为编码与它无关。
(这个问题解决了我先前问题中的核心问题。不用担心我已经删除了它们。)
答案 0 :(得分:6)
在JavaScript中,字符串由字符而不是字节处理,但前提是它们可以用16位代码点表示。
大多数字符都不会引起任何问题,但在这种情况下它们并不“适合”,因此就JavaScript而言它们占用2个字符。
在这种情况下,你需要这样做:
string2.substring(0, 2) // ""
有关Unicode怪癖的更多信息,请参阅UTF-8 Everywhere。
答案 1 :(得分:0)
您可以使用该方法比较2个字符串:
string1.localeCompare(string2);
答案 2 :(得分:0)
子串参数是他开始的索引和结束,就好像你把它改成substr一样,参数是索引从哪里开始和多少个字符。