1. ホーム
  2. javascript

複数の文字列を一度に置換する

2023-08-26 17:25:40

質問

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);
...

どのように解決するのですか?

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);