Javascript JS:在字符串中找到一个相似的单词并替换它

Javascript JS:在字符串中找到一个相似的单词并替换它,javascript,string,azure,replace,Javascript,String,Azure,Replace,考虑到以下GLYTCFULL字符串: raybradbury la foire defiténébres 在我调用Azure拼写检查器API之后,我有可能替换该字符串。建议如下: "raybradbur" should be "ray bradbury" "defiténébre" should be "de ténébres" 如您所见,简单地用ray bradbury替换Raybradbury,或者在原始字符串中用de ténébre替换de ténébre,将在ray bradburyy中

考虑到以下GLYTCFULL字符串:

raybradbury la foire defiténébres
在我调用Azure拼写检查器API之后,我有可能替换该字符串。建议如下:

"raybradbur" should be "ray bradbury"
"defiténébre" should be "de ténébres"
如您所见,简单地用ray bradbury替换Raybradbury,或者在原始字符串中用de ténébre替换de ténébre,将在ray bradburyy中留下额外的y,在de tenebress中留下额外的s

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

以下是我到目前为止的情况:

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]*", "gi"),
我支持不区分大小写的匹配。
g表示匹配所有事件。

有趣的是,我尝试了您的解决方案,它很有效。即使我不知道[\\\S]*标志是如何工作的,我也会使用它。非常感谢你的帮助。
regExp = new RegExp( "[\\\S]*" + token.trim() + "[\\\S]*", "gi"),