一尘不染

一次替换多个字符串

javascript

在JavaScript中有一个简单的等效项吗?

$find = array("<", ">", "\n");
$replace = array("&lt;", "&gt;", "<br/>");

$textarea = str_replace($find, $replace, $textarea);

这是使用PHP的str_replace,它允许您使用单词数组来查找和替换。我可以使用JavaScript / jQuery做类似的事情吗?

...
var textarea = $(this).val();

// string replace here

$("#output").html(textarea);
...

阅读 278

收藏
2020-04-25

共1个答案

一尘不染

您可以使用自己的函数来扩展String对象,该函数可以满足您的需要(如果缺少功能,则很有用):

String.prototype.replaceArray = function(find, replace) {
  var replaceString = this;
  for (var i = 0; i < find.length; i++) {
    replaceString = replaceString.replace(find[i], replace[i]);
  }
  return replaceString;
};

对于全局替换,您可以使用正则表达式:

String.prototype.replaceArray = function(find, replace) {
  var replaceString = this;
  var regex; 
  for (var i = 0; i < find.length; i++) {
    regex = new RegExp(find[i], "g");
    replaceString = replaceString.replace(regex, replace[i]);
  }
  return replaceString;
};

要使用该功能,它将类似于您的PHP示例:

var textarea = $(this).val();
var find = ["<", ">", "\n"];
var replace = ["&lt;", "&gt;", "<br/>"];
textarea = textarea.replaceArray(find, replace);
2020-04-25