我正在实现网站搜索,并尝试使用以下代码突出显示用户搜索的词:
data = Regex.Replace(data, Model.SearchCriteria, "<strong>" + Model.SearchCriteria + "</strong>", RegexOptions.IgnoreCase);
但是,如果数据是“我向北走向加拿大”并且用户搜索了“北方”,则结果将显示“我向北走向加拿大”并突出显示北方,但实际数据已被略微错误地替换。
如何在突出显示用户搜索内容的同时保持返回数据的完整性?
请您参考如下方法:
在这种情况下,您需要使用替换模式将原始文本放入替换字符串而不是显式搜索条件
data = Regex.Replace(
"("+Model.SearchCriteria+")",
"<strong>$1</strong>",
RegexOptions.IgnoreCase);
将搜索条件放在括号中会将其放入一个未命名的组中。然后,您可以使用 $1 在替换字符串中按索引引用该组。然后,这将使用原始匹配文本。
关于 Regex.Replace 中替换字符串的信息
