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

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

<分区>

我遇到了一个可能的 IE 错误,调用 JavaScript .length 函数返回一个值,如果/当字符串派生自 .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.)

有趣的是,上面的代码示例将为以下内容返回 true(在 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 将为 month.slice(0,3) 返回“Ma”而不是“Mar”。

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

运行此 fiddle在 IE 和 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

最佳答案

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

这似乎是由于 toLocaleDateString 函数在 IE11 中添加了额外的 LTR 和 RTL 字符引起的。其中一条评论给出了适合我的正则表达式替换功能。

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

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

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

关于javascript - Internet Explorer 返回错误长度的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36225603/

相关文章:

IE11 上的 XSLT 处理?

css - 在 HTA 中失去焦点时,按钮的虚线边框变为两条实线边框

javascript - 验证 google reCaptcha 时输入响应和密码无效

javascript - 等待多个元素的动画结束?

java - GWT DatePicker 语言环境

c++ - 有效的语言环境名称

javascript - 更改 Fullcalendar React 组件的语言

javascript - WP 中的菜单在 IE-11 中不显示

JavaScript 错误捕获未读取 0(零)

javascript - Angularjs 在history.back()上设置条件