字符串拆分数组中的不一致会导致 IE 11



注意:我在这里提到的问题只发生在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

最新更新