使用 javascript 计算 html 标签长度

Counting html tag length using javascript

我有一个像这样的 html 字符串:

<span class="1"><br>hi how<br>are</span><span>you?</span><br>

和一个文本字符串:"hi how are you?"

我有一个数字 n,例如 4。 在文本字符串中,第 4 个字符(从 0 开始计数)是 "o"。 我想使用 tag_count() 从 html 字符串中获取相同的字符。 在那种情况下,变化应该是 20,但我不起作用。

var string="<span class="1"><br>hi how<br>are</span><span>you?</span><br>";
var c=4+tag_count(4,string);


function tag_count(n,string) {
    var variation=0;
    var i;
    for(i=0;i<=n;i++) {
        if(string.charAt(i)=="<") {
            var j=0;
            while((string.charAt(i+j)!=">")&&(string.charAt(i+j)!==undefined)) {
                j++;
            }
            n=n+j+1;
            variation=variation+j+1;
        }
    }
    return(variation);
}

你可以这样做:

var string="<span class="1"><br>hi how<br>are</span><span>you?</span><br>";
var length = $(string).find('*').andSelf().length;
console.log(length);

最好的方法:

  1. 使用 regexreplace 将所有标签替换为空字符串。
  2. 输出字符位置用charAt.

查找标签的正则表达式:

var tags = /<+?.*?>/g;

换句话说:查找从 <> 的所有内容。 *后面的?表示是non greedy,这样每一个标签都可以找到。没有?就比较贪心,只会找一个标签,就是整个html。用空字符串替换匹配项:

var str = html.replace(tags, "");

完成JavaScript

var html = "<span class='one1'><br>hi how<br>are</span><span>you?</span><br>";

function charAtHtmlText(html, n) {
    var tags = /<+?.*?>/g;
    var str = html.replace(tags, "");
    var res = str.charAt(n);
    return res;
}

var res = charAtHtmlText(html, 4);
alert(res);
// console.log(res);