Microsoft Edge javascript toLocaleTimeString不正确的间距

时间:2015-08-19 14:58:06

标签: javascript microsoft-edge

我无法理解一些似乎在Edge中表现不同的JavaScript的情况。 特别把它煮成:

var testi = new Date().toLocaleTimeString();
var len2 = testi.length;
alert(len2);

我在Edge中的长度是17,在Chrome和IE中它是10 字符串中似乎有一些幻像空格,它也搞砸了我试图将其子串起来。

https://jsfiddle.net/m1m8h7ym/

仅供参考我的时区是美国中部。

1 个答案:

答案 0 :(得分:11)

看起来微软正在the invisible left-to-right mark中滑倒。这也发生在边缘模式下的IE11中。我通过循环遍历字符串中的每个字符并将其传递给encodeURIComponent()

来解决这个问题

var output = document.getElementById("output");
var testi = new Date().toLocaleTimeString();
var row;
for (var i = 0, len = testi.length; i < len; i++) {
    row = document.createElement("pre");
    row.innerHTML = encodeURIComponent(testi[i]);
    output.appendChild(row);
}
<div id="output"></div>

你可以通过unicode删除它来删除它,可以通过表达式\u200E在正则表达式中捕获它。

var output = document.getElementById("output");
var testi = new Date().toLocaleTimeString().replace(/\u200E/g,"");
var row;
for (var i = 0, len = testi.length; i < len; i++) {
    row = document.createElement("pre");
    row.innerHTML = encodeURIComponent(testi[i]);
    output.appendChild(row);
}
<div id="output"></div>