找到标签在字符串中的位置 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)
我想你正在找这个
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]
提前致谢。我遇到了一个问题。我有这样的字符串
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)
我想你正在找这个
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]