注意:我在这里提到的问题只发生在IE中(我用过IE 11(。它在所有其他浏览器中都能正常工作
问题描述: 我正在使用字符串拆分方法使用分隔符拆分字符串。在我的例子中,分隔符是"/"。
拆分按预期工作。但是,当我从结果数组中取出值进行比较时,它给了我奇怪的结果。我已经提到了我在每行的评论中得到的结果。有人可以告诉我如何解决这个问题..
var d = new Date(9999, 11, 31);
var sDateString = d.toLocaleDateString();//RETURNED "12/31/9999"
var aResult = sDateString.split("/");
console.log(aResult);//THIS GAVE THE RESULT ["12", "31", "9999"]
console.log(aResult[0]);//THIS GAVE THE RESULT 12. THIS IS AS EXPECTED
console.log(aResult[0]=="12");//RESULT IS false!!. MY EXPECTATION WAS ture HERE
console.log(aResult[0]==="12");//RESULT IS false!!. MY EXPECTATION WAS ture HERE
console.log(parseInt(aResult[0].trim()));//RESULT IS NaN!!. I EXPECTED NUMBER 12
问候
法赫德·哈姆萨
出于某种原因,IE11 添加了u200e
字符 -这是Unicode Character 'LEFT-TO-RIGHT MARK'
- 请参阅此
所以
var sDateString = d.toLocaleDateString();
导致sDateString
*12*/*31*/*9999
-*
u200e
最简单的修复
var sDateString = (new Date()).toLocaleDateString().replace(/u200e/g, '');
这不会破坏真正的浏览器,但它应该修复愚蠢的浏览器:p