js怎么能替换以某个词开头的字符串

var str='我想重置密码,可是提示我密码重复,我又得重新想一个密码,密码的重要性';
我怎么能把str中重置重复重新这些词语换成虫置虫复虫新,但是密码的重要性不改变

改变前 :str='我想重置密码,可是提示我密码重复,我又得重新想一个密码,密码的重要性';

改变后 :str='我想虫置密码,可是提示我密码虫复,我又得虫新想一个密码,密码的重要性';

求一个好用的方法

阅读 3.3k
2 个回答

如果你只想排除 重要性 这一个词的话可以使用如下方法

'我想重置密码,可是提示我密码重复,我又得重新想一个密码,密码的重要性'.replaceAll(/重(?!要性)/g,"虫")
"我想虫置密码,可是提示我密码虫复,我又得虫新想一个密码,密码的重要性"

简易敏感词替换程序

const str = '我想重置密码,可是提示我密码重复,我又得重新想一个密码,密码的重要性'
const dict = {
  "重置": ["虫置", "重志"],
  "重复": ["虫付", "虫负", "重富"],
}

console.log(str.replaceAll(new RegExp(Object.keys(dict).join("|"), "g"), (substring) => {
  const replaceArr = dict[substring]
  return replaceArr[Math.floor(Math.random() * replaceArr.length)]
}))

如果需替换词组不固定,那么这个问题就涉及到分词和词组匹配,会变成一个比较复杂的问题,你可以看下现有的拼音转换库,比如 https://www.npmjs.com/package...,浏览器端的算力有限如果在浏览器端做转换匹配结果不一定会精确,在服务端做分词会更合适些。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏