【发布时间】:2020-04-17 10:42:55
【问题描述】:
我正在我的应用程序中搜索标题和描述,任务是缩短搜索结果。例如,如果描述太长(超过 2 行),则应将结果缩短为一两行文本,并突出显示找到的单词。
这是我迄今为止尝试过的,但没有按预期工作:
const truncateHighlightedText = (
sentence,
searchExpression,
truncateLength
) => {
const pattern = new RegExp(
'\\b.{1,' +
truncateLength +
'}\\b' +
searchExpression +
'\\b.{1,' +
truncateLength +
'}\\b',
'i'
);
return sentence.match(pattern);
};
const sentence = "Testsdfgbsegsegsrewgserwfgvsrevfse ewrwer wergwregew erwgrewgwerg erwgwr eerg rg g er egr ew erger rtggrt tr ert tr tr tg tgr gtr gtr egrt rtg trg rg e eg";
const searchExpression = "egseg";
const truncateLength = 20;
const result = truncateHighlightedText(sentence, searchExpression, truncateLength);
console.log(result);
https://jsfiddle.net/dwr3qgs0/1/
完成这项任务的最佳方法是什么?
【问题讨论】:
-
你希望得到什么样的匹配?唯一独立的
eg位于字符串的最末尾,这不匹配,因为.{1之后至少需要一个字符 -
@CertainPerformance 我希望 searchExpression 和这个词两边的几个词。例如测试sdfgbs
egsegsrewgserwfgvsrevfse ewrwer -
即使
eg不是一个独立的词? -
@CertainPerformance 没关系,因为我想从行的两侧添加“...”,但显示独立单词也很棒
标签: javascript reactjs search