2016-11-08 1 views
0

다음 문자열이있는 경우 : This is another song you should listen to 단어 수에 따라 단어를 강조 표시하는 기능을 작성하려고했습니다. 예를 들어, highlightWord(originalString,nthWord)과 같은 방법으로 네 번째 단어를 강조하고 싶습니다.자바 스크립트의 단어 수를 기준으로 단어 강조 표시

This is another <span class=\"highlighted\">song</span> you should listen to

이 내가 검색 문자열 (regexMatch = "is")을 전달하여, 하나를 쓴 highlightMatch 기능을 사용하려고했으나 문제는이 (가) This 대신 is에 강조한다는 것입니다 : : 그리고 문자열이 반환 될

function highlightNthWord(string,n) { 
    var m = string.match(new RegExp('^(?:\\w+\\W+){' + n + '}(\\w+)')); 
    return m && '<b>'+m[1]+'</b>'; 
} 
:
function highlightMatch(originalValue,regexMatch) { 
    var tempInnerHTML = stripTags(originalValue); 
    originalValue.innerHTML = tempInnerHTML.replace(regexMatch,'<span class="highlighted">'+regexMatch+'</span>'); 
} 

나는이 highlightNthWord 방법을 사용하여 시도

그러나이 단어는 n 번째 단어가 강조 표시된 전체 문장이 아니라 강조 표시된 n 번째 단어 만 반환합니다. 자바 스크립트 만 사용하고 싶습니다 (jquery 없음).

당신은 문자열에 공간이 분할 한 후 다시 문자열을 구축 할 수 있습니다
+1

['및'에 가입) ('사용하여 분할 시도 ()'] (https://jsfiddle.net/tusharj/wo6u1z82/1/) – Tushar

+0

확실히 잔인한 사람이지만, 전에 비슷한 질문에 대답했다 : http://stackoverflow.com/questions/15958020/variabl e-inside-a-string-inside-a-string/15959797 # 15959797 – plalx

답변

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))

0

는이

function highlightMatch(originalValue, matchString) { 
    var re = new RegExp(matchString, "igm"); 
    var replace = '<span class="highlighted">'+matchString+'</span>'; 
    return originalValue.replace(re ,replace); 
} 
관련 문제