找到标签在字符串中的位置 javascript

find position of tag inside a string javascript

提前致谢。我遇到了一个问题。我有这样的字符串

var string = "This is where <span>I got stuck</span> and I am <span>clueless</span> can anyone <span>help please</span> ";

我想知道 span 标记在字符串中每次出现的位置。在示例字符串中,我在第 3 个单词后有一个 span 标记,在第 9 个单词后有一个,在第 12 个单词后有一个。所以结果数组将是 [3, 9, 12]。请帮助我。

编辑:另外,除了上面的数组之外,我还能得到每个 span 标签内的字数吗?

您可以像这样使用正则表达式检查字符串:

var string = "This is where <span>I got stuck</span> and I am <span>clueless</span> can anyone <span>help please</span> ";
var regex = /<span>/gi, result, indices = [];
while ((result = regex.exec(string))) {
     console.log(result.index);
}

这将打印标签 <span> 的每个位置。您可以修改 While 代码,它应该会完成剩下的工作。 :-)

正如您已标记 javascript/jQuery,一种方法是使用 .each()split()

var string = "This is where <span>I got stuck</span> and I am <span>clueless</span> can anyone <span>help please</span> ";

//Count position
var pos = [];
string.split(' ').forEach(function(val,i){
    if(val.indexOf('<span>') > -1){
        pos.push(i)
    }
});

//Count words inside each  `<span>`
var wordCount = $('<div/>').html(string).find('span').map(function(){
    return this.innerText.split(' ').length
})
console.log(wordCount)

Demo

我想你正在找这个

var string = "This is where <span>I got stuck</span> and I am <span>clueless</span> can anyone <span>help please</span> ";

var prevPos = 0;

var pos = [];
var words = [];
string.split(' ').forEach(function(val,i){
    if(val.indexOf('<span>') > -1){
        pos.push(i);
        var wordsCount = i - prevPos;
        prevPos = i; 
        words.push(wordsCount);

    }
});

console.log(pos);
console.log(words);

您可以使用:

var string = "This is where <span>I got stuck</span> and I am <span>clueless</span> can anyone <span>help please</span> ";

var arr = string.split(/[\s>]+/);

var posn = [];
for(var p=-1; (p=arr.indexOf('<span', p+1)) >= 0; )
   posn.push(p)

//=> [3, 10, 14]