gpt4 book ai didi

javascript - JS : Find a look-alike word in String and replace it

转载 作者:行者123 更新时间:2023-12-03 03:08:49 26 4
gpt4 key购买 nike

考虑以下(glytchfull)字符串:

raybradbury la foire defiténébres

在调用 Azure 拼写检查器 API 后,我可以替换该字符串。建议如下:

"raybradbur" should be "ray bradbury"
"defiténébre" should be "de ténébres"

如您所见,只需将原始文件中的 raybradbur 替换为 ray bradbury 或将 defiténébre 替换为 de ténébres字符串会在 ray bradburyy 中留下额外的 y,并在 de tenebress 中留下额外的 s

因此,我需要找到一种方法来识别原始字符串中与 API 返回的替换项相似的单词,并将其完全替换为其替换项。

这是我到目前为止所拥有的:

let replaceInStr = function(str, tokens, length){  
let versions = []
versions.push(str)
console.log(str) // -> raybradbury la foire defiténébres
for (let i = 0; i < length; i++) {
// INTELLIGENCE WARNING!
// CONSIDER IDENIFYING THE WHOLE PART OF THE STRING THAT LOOKS
// LIKE TOKEN NOT JUST TOKEN SO YOU CAN REPLACE IT
let token = tokens[i]['token'],
suggestion = tokens[i]['suggestions'][0]['suggestion'],
regExp = new RegExp(token.trim()),
replaced = versions[0].replace(regExp, suggestion)
versions.pop()
versions.push(replaced)
};
console.log(versions[0]) // -> ray bradburyy la foire de ténébress
return versions[0]
};

由于我找不到通用的方法来做到这一点,因此我们将非常感谢任何反馈或不同的方法。

最佳答案

您需要将正则表达式括起来以匹配非空格字符。

更改此行

regExp = new RegExp(token.trim()),

regExp = new RegExp( "[\\\S]*" + token.trim() + "[\\\S]*"),

我猜您可能想一次替换多个匹配项,因此还要添加全局标志

regExp = new RegExp( "[\\\S]*" + token.trim() + "[\\\S]*", "gi"),

i 用于不区分大小写的匹配。g 用于匹配所有出现的情况。

关于javascript - JS : Find a look-alike word in String and replace it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47033625/

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