toLocaleString return IE 中的意外字符

toLocaleString return unexcepted characher in IE

我预计 toLocaleString 到 return "Monday"(6 个字符),

但是 IE return给我一些意想不到的字符,

如何在没有另一个扩展名的情况下正确获得工作日 API(moment.js,等等...)

IE11:

var weekday = new Date('2015-11-23').toLocaleString("en-us", { weekday: 'long'});

weekday.toString() //"Monday"
weekday.length //7
weekday.charCodeAt(0) //8206 <-- what is this

Chrome53:

var weekday = new Date('2015-11-23').toLocaleString("en-us", { weekday: 'long'});

weekday.toString() //"Monday"
weekday.length //6
weekday.charCodeAt(0) //77

好的,我做了一些调查:

字符 8206 是 Left-to-right mark,很可能是 MS 作为其国际化规则的一部分添加的。

可以轻松剥离。

var stripped = weekday.replace(/\u200E/g, "");
console.log(stripped.length)

请注意:您可能还会遇到字符 8207,这是一个从右到左的标记 -- 可以同样轻松地去除。