如果我有以下字符串:This is another song you should listen to
我试图编写一个函数,只根据单词计数突出显示单词。例如,我想使用如下方法突出显示第4个单词:highlightWord(originalString,nthWord)
。返回的字符串将是:
This is another <span class=\"highlighted\">song</span> you should listen to
我尝试使用我编写的highlightMatch
函数,一个是通过传递搜索字符串(regexMatch = "is")
,但问题是它突出显示This
而不是is
}:
function highlightMatch(originalValue,regexMatch) {
var tempInnerHTML = stripTags(originalValue);
originalValue.innerHTML = tempInnerHTML.replace(regexMatch,'<span class="highlighted">'+regexMatch+'</span>');
}
我也尝试过使用这个highlightNthWord方法:
function highlightNthWord(string,n) {
var m = string.match(new RegExp('^(?:\\w+\\W+){' + n + '}(\\w+)'));
return m && '<b>'+m[1]+'</b>';
}
但是这个只返回突出显示的第n个单词,而不是突出显示第n个单词的整个句子。 我希望只坚持使用javascript(没有jquery)。
答案 0 :(得分:1)
您可以将字符串拆分为空格,然后重新构建字符串:
function highlightNthWord(string,n) {
var m = string.split(new RegExp(/\s+/));
return m.splice(0, n-1).join(" ") + (' <b>'+m.splice(0, 1)+'</b> ') + m.join(" ");
}
console.log(highlightNthWord('This is another song you should listen to', 4))
答案 1 :(得分:0)
试试这个
function highlightMatch(originalValue, matchString) {
var re = new RegExp(matchString, "igm");
var replace = '<span class="highlighted">'+matchString+'</span>';
return originalValue.replace(re ,replace);
}