gpt4 book ai didi

javascript - 使用 javascript 查找搜索词(片段)周围的单词

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:50:05 24 4
gpt4 key购买 nike

我正在使用 jlinq 从一些 json 返回搜索结果我想向用户显示包含搜索词的结果文本片段,在搜索词前说三个词,在搜索词后说三个词。

var searchTerm = 'rain'
var text = "I'm singing in the rain, just singing in the rain";

结果会像“在雨中歌唱,只是歌唱”

我如何在 javascript 中执行此操作?我看过一些 suggestions using php ,但没有专门针对 javascript 的内容。

最佳答案

这是一个稍微好一点的近似值:

function getMatch(string, term)
{
index = string.indexOf(term)
if(index >= 0)
{
var _ws = [" ","\t"]

var whitespace = 0
var rightLimit = 0
var leftLimit = 0

// right trim index
for(rightLimit = index + term.length; whitespace < 4; rightLimit++)
{
if(rightLimit >= string.length){break}
if(_ws.indexOf(string.charAt(rightLimit)) >= 0){whitespace += 1}
}

whitespace = 0
// left trim index
for(leftLimit = index; whitespace < 4; leftLimit--)
{
if(leftLimit < 0){break}
if(_ws.indexOf(string.charAt(leftLimit)) >= 0){whitespace += 1}
}
return string.substr(leftLimit + 1, rightLimit) // return match
}
return // return nothing
}

这有点“贪婪”,呵呵,但它应该可以解决问题。注意 _ws 数组。您可以包含您喜欢的所有空格或修改以使用正则表达式检查空格。

这已被略微修改以处理短语。它只会找到该术语的第一次出现。处理多次出现需要稍微不同的策略。

我想到你想要的也可以(在不同程度上)通过以下方式实现:

function snippet(stringToSearch, phrase)
{
var regExp = eval("/(\\S+\\s){0,3}\\S*" + phrase + "\\S*(\\s\\S+){0,3}/g")
// returns an array containing all matches
return stringToSearch.match(regExp)
}

唯一可能的问题是,当它抓取第一次出现的模式时,它会切掉匹配的部分,然后再次搜索。您还需要注意“短语”变量中没有任何正则表达式字符(或将其转换为十六进制或八进制表示形式)

无论如何,我希望这对男人有帮助! :)

关于javascript - 使用 javascript 查找搜索词(片段)周围的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16159532/

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