JavaScript获取字符串的实际长度(没有实体)

Hed*_*dge 17 javascript html-entities

我需要确定可能包含html实体的字符串的长度.

例如"↓" (↓)将返回长度6,这是正确的,但我希望这些实体只计为1个字符.

kar*_*m79 11

<div id="foo">&darr;</div>

alert(document.getElementById("foo").innerHTML.length); // alerts 1
Run Code Online (Sandbox Code Playgroud)

因此,基于该基本原理,创建一个div,将混合的实体ridden字符串附加到它,提取HTML并检查长度.

var div = document.createElement("div");
div.innerHTML = "&darr;&darr;&darr;&darr;";
alert(div.innerHTML.length); // alerts 4
Run Code Online (Sandbox Code Playgroud)

在这里试试吧.

为方便起见,您可能希望将其放在函数中,例如:

function realLength(str) { // maybe there's a better name?
    var el = document.createElement("div");
    el.innerHTML = str;
    return el.innerHTML.length;   
}
Run Code Online (Sandbox Code Playgroud)

  • 有趣的解决方案. (3认同)