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

Jed*_*Jed 9 javascript locale string-length internet-explorer-11

我遇到了一个IE调用JavaScript的错误.length如果/当字符串派生时,函数返回一个值为1的值.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.)
Run Code Online (Sandbox Code Playgroud)

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

month[0] == "";
month[1] == "M";
month[2] == "a";
month[3] == "r";
month[4] == "c";
month[5] == "h";
Run Code Online (Sandbox Code Playgroud)

在我的特定情况下,这导致我需要.slice()一个月的问题.示例:如果月份是3月,则IE将返回"Ma" month.slice(0,3)而不是"Mar".

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

在IE和Chrome/Firefox/Safari中运行这个小提琴并注意month.lengthIE中的错误.

我的环境:

操作系统:Win Server 2012 R2

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

地区:英语/美国

小智 9

所以,我在IE 11中偶然发现了这篇帖子toLocaleDateString错误

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

month.replace(/[^ -~]/g,'');
Run Code Online (Sandbox Code Playgroud)

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

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

  • 还想添加[此问题](http://stackoverflow.com/questions/25574963/ies-tolocalestring-has-strange-characters-in-results)作为未来读者的相关信息. (2认同)