我需要在 HTML 中的语句中突出显示多个单词。
Ex: words: ['Hello', 'world', 'my']
Statement: 'Hello, welcome to my beautiful world'
我可以在正常情况下使用正则表达式查找和替换来完成它(比如用一些标记替换每个单词的出现,比如
<span class="highlight-span"> word </span>.
但问题是,如果任何像 spa、span、class、lass、high 这样的词是我的替换标记字符串的一部分,我就会遇到问题。)
关于以更好的方式做到这一点的任何想法?
下面是代码供您参考。
import {
Pipe,
PipeTransform
} from '@angular/core';
@Pipe({
name: 'highlight'
})
export class HighlightSearch implements PipeTransform {
transform(value: string, args: string): any {
if (args && value) {
let startIndex = value.toLowerCase().indexOf(args.toLowerCase());
if (startIndex != -1) {
let endLength = args.length;
let matchingString = value.substr(startIndex, endLength);
return value.replace(matchingString, "<span class="highlight-span">" + matchingString + "</span>");
}
}
return value;
}
}
在这种情况下,我不能使用诸如 mar、mark 之类的搜索词。我怎样才能摆脱这些问题?
慕森卡
相关分类