Microsoft Edge javascript toLocaleTimeString 不正确的间距

Microsoft Edge javascript toLocaleTimeString incorrect spacing

我无法理解某些 JavaScript 在 Edge 中的表现似乎有所不同。 具体归结为:

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

我在 Edge 中的长度是 17,在 Chrome 和 IE 中是 10 字符串中似乎有一些幻影空格,它也搞砸了我尝试对其进行子串化的尝试。

https://jsfiddle.net/m1m8h7ym/

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

看起来 Microsoft 正在下滑 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 将其删除,从而将其删除,该 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>