gpt4 book ai didi

javascript - 突出显示搜索结果字符串大小写问题

转载 作者:行者123 更新时间:2023-11-29 19:00:18 24 4
gpt4 key购买 nike

我正在使用一个 cfscript,它接受一个字符串、搜索词和可选的突出显示选项,并返回突出显示搜索词的字符串:

<cfscript>
string function highlightKeywords(required string str, required string keywords, struct highlight){
var keyword = "";
var replacement = "";

param name="highlight.tag" default="span";
param name="highlight.attributes" default="style='color:rgb(255,102,0);'";

for (var index=1; index <= listLen( arguments.keywords, " " ); index++){
keyword = ReReplace(listGetAt(arguments.keywords, index, " "), "\(|\)", "", "all" );
replacement = "<#highlight.tag#";
if (len(highlight.attributes)){
replacement &= " #highlight.attributes#";
}
replacement &= ">" & keyword & "</#highlight.tag#>";

arguments.str = reReplaceNoCase( arguments.str, "\b#keyword#\b", replacement, "all" );
}
return arguments.str;
}
</cfscript>

除一个问题外,一切似乎都正常。它改变了原始字符串的大小写。

例如,当用户搜索术语“highlight search”时,原始字符串存储为“This is a Highlight Search Testing”。人们会期望它会返回“This is a Highlight Search Testing”。相反,它返回“这是一个突出显示搜索测试”。它用用户键入的任何内容替换了大小写,而不是保留原始大小写。有人可以帮我吗?提前致谢。

补充说明:CF 对于反向引用的工作方式不同。

最佳答案

您可以使用 "\b(#keyword#)\b"(注意捕获括号)捕获关键字并替换为 \1 反向引用到这个 Group 1 的值,以实际替换关键字的匹配变体。

使用

replacement &= ">\1</#highlight.tag#>"

然后

 arguments.str = reReplaceNoCase( arguments.str, "\b(#keyword#)\b", replacement, "all" )

关于javascript - 突出显示搜索结果字符串大小写问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47277490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com