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

时间:2016-03-25 18:19:22

标签: javascript locale internet-explorer-11 string-length

我遇到了一个IE调用JavaScript的错误。length函数返回一个值,如果/当字符串派生自.toLocaleString()时,该值会减1。

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.)

有趣的是,上面的代码示例将返回true(在IE中)以下内容:(month [0]应为“M”)

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

在我的特定情况下,这导致我需要.slice()月份的问题。示例:如果月份是3月,那么IE将返回“Ma”作为month.slice(0,3)而不是“Mar”。

这是IE的已知错误吗?是否有针对此问题的修复和/或解决方法?

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

我的环境:

  

操作系统:Win Server 2012 R2

     

IE版本:11.0.9600.18231(更新版本:11.0.29)

     

区域设置:英语/美国

1 个答案:

答案 0 :(得分:9)

所以,我偶然发现了这篇文章toLocaleDateString error in IE 11

看起来它是由toLocaleDateString函数在IE11中添加额外的LTR和RTL字符引起的。其中一条评论给出了正在使用的正则表达式替换功能。

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

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

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

相关问题