Internet Explorer 返回错误长度的字符串

Internet Explorer Returning Wrong Length of String

我已经 运行 遇到一个可能的 IE 错误,其中调用 JavaScript .length 函数 returns 一个值偏离 1 if/when 字符串来自 .toLocaleString().

var d = new Date();
var locale = navigator.language;
var month = d.toLocaleString(locale, { month: "long"});
// month.length will return the length of the month string +1 
//(eg: if month = "March", month.length will return 6.)

有趣的是,上面的代码示例 return 对以下内容为真(在 IE 中):(month[0] should be "M")

month[0] == "";
month[1] == "M";
month[2] == "a";
month[3] == "r";
month[4] == "c";
month[5] == "h";

在我的特殊情况下,这会导致我需要 .slice() 这个月的问题。示例:如果月份是三月,那么 IE 将 return“Ma”表示 month.slice(0,3) 而不是“Mar”。

这是 IE 的已知错误吗?是否有解决此问题的 and/or 解决方法?

运行 在 IE 中这个 fiddle 和 Chrome/Firefox/Safari 并注意 month.length 在 IE 中是错误的。

我的环境:

OS: Win Server 2012 R2

IE Version: 11.0.9600.18231 (Update Versions: 11.0.29)

Locale: English/US

所以,我偶然发现了这个 post toLocaleDateString error in IE 11

看来是toLocaleDateString函数在IE11中添加了额外的LTR和RTL字符造成的。其中一条评论给出了适合我的正则表达式替换功能。

month.replace(/[^ -~]/g,'');

尝试在执行 .toLocaleDateString() 后添加它,它应该可以工作。它对我有用。

我们鄙视 IE 的另一个原因。