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

标签 javascript string azure replace

考虑以下(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/

相关文章:

javascript - 根据长度将字符串拆分为多个数组(javascript)

azure - 调用Graph API错误: Request_DataContractVersionMissing

javascript - 有没有可以转换纯 HTML 而不是图像的 jQuery slider ?

javascript - 如何在 Blogger 上嵌入第 3 方小部件

javascript - 带有 rgba 渐变填充的 RaphaelJS

c# - 无法将跟踪事件记录到 Application Insights

c# - 如何限制 Azure Application Insights 仅记录 dotnet core 项目中的自定义事件?

javascript - 在 JavaScript 中获取链接元素 cssRules/Rules

javascript - 通过检查是否存在一系列不起作用的字符,在 url 上运行 ".includes"

ios - 添加可本地化字符串文件时出错