如何使lodash _.replace在字符串中出现?

Ant*_*ony 25 javascript string lodash

如何用另一个字符串替换字符串中每个字符串模式的出现?

var text = "azertyazerty";
_.replace(text,"az","qu")
Run Code Online (Sandbox Code Playgroud)

返回 quertyazerty

小智 33

你也可以

var text = "azertyazerty";
var result = _.replace(text, /az/g, "qu");
Run Code Online (Sandbox Code Playgroud)

  • 这本质上是一个纯代码答案,不如提供一些描述的答案有用。您可能会提到这是编写正则表达式的“更简单”的方法,但实际上您正在使用正则表达式。 (2认同)

Ant*_*ony 31

你必须使用lodash提供的全局选项RegExp.

所以只需使用

var text = "azertyazerty";
_.replace(text,new RegExp("az","g"),"qu")
Run Code Online (Sandbox Code Playgroud)

回来 quertyquerty

  • “g”修饰符用于执行全局匹配(查找所有匹配项而不是在第一个匹配项后停止) (3认同)

Sim*_*son 11

我喜欢lodash,但这可能是没有它的少数事情之一.

var str = str.split(searchStr).join(replaceStr)
Run Code Online (Sandbox Code Playgroud)

作为具有一些错误检查的实用功能:

var replaceAll = function (str, search, replacement) {
  var newStr = ''
  if (_.isString(str)) { // maybe add a lodash test? Will not handle numbers now.
    newStr = str.split(search).join(replacement)
  }
  return newStr
}
Run Code Online (Sandbox Code Playgroud)

为了完整起见,如果你确实想要使用lodash,那么要实际替换文本,将结果赋给变量.

var text = 'find me find me find me'
text = _.replace(text,new RegExp('find','g'),'replace')
Run Code Online (Sandbox Code Playgroud)

参考: 如何在JavaScript中替换所有出现的字符串?


Dav*_*alu 5

Vanilla JS 完全有能力在没有 lodash 帮助的情况下做你需要的事情。

const text = "azertyazerty"
text.replace(new RegExp("az", "g"), "qu")
Run Code Online (Sandbox Code Playgroud)