javascript で検索文字列を強調しようと思い、置換処理を実施しています。
javascript
1function highlight(text, words) { 2 var i, len = words.length, re; 3 for (i = 0; i < len; i++) { 4 re = new RegExp(words[i], 'g'); 5 if (re.test(text)) { 6 text = (text).replace(re, '<strong>$&</strong>'); 7 } 8 } 9 return text; 10}
めちゃくちゃ便利なJavaScript オリジナル関数10選を参考に上記で実装していましたが、検索対象の空白を無視して置換したかったため、以下の様に変更しました。
javascript
1function highlight(text, words) { 2 var i, len = words.length, re; 3 for (i = 0; i < len; i++) { 4 re = new RegExp(words[i], 'g'); 5 if (re.test(text.replace(/\s+/g, ""))) { 6 text = (text.replace(/\s+/g, "")).replace(re, '<strong>$&</strong>'); 7 } 8 } 9 return text; 10}
当然ですが、全空白を削除してしまうため、意図した動作にはなりません。
常套手段がありそうな置換ですが、ちょっと探せませんでした。
うまいやり方があれば、ご教示いただけないでしょうか?
よろしくお願いいたします。
実現したい置換イメージ:
元文書1
ほげ ほげ ほげ 検索文字列 ほげ ほげ ほげ
元文書2
ほげ ほげ ほげ 検索 文字 列 ほげ ほげ ほげ
変換後→
ほげ ほげ ほげ <strong>検索文字列</strong> ほげ ほげ ほげ
回答2件
あなたの回答
tips
プレビュー