ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で複数の文字列置換を実行するにはどうすればよいですか?

JavaScript で複数の文字列置換を実行するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-29 09:44:10
オリジナル
643 人が閲覧しました

How to Perform Multiple String Replacements in JavaScript?

JavaScript での複数の文字列の置換

文字列の置換は、プログラミングにおける一般的なタスクです。 JavaScript では、 replace() メソッドを使用すると、指定された文字列の 1 つの一致を新しい文字列に置き換えることができます。ただし、複数の文字列を同時に他の複数の文字列に置き換えたい場合はどうすればよいでしょうか?

次の例を考えてみましょう:

var str = "I have a cat, a dog, and a goat.";

// Attempt to replace multiple strings with incorrect results
str = str.replace(/cat/gi, "dog");
str = str.replace(/dog/gi, "goat");
str = str.replace(/goat/gi, "cat");

// Output: "I have a cat, a cat, and a cat"
ログイン後にコピー

ご覧のとおり、これでは目的の結果が得られません。 「私は犬、ヤギ、猫を飼っています。」の結果。代わりに、「cat」のすべてのインスタンスが「dog」などに誤って置き換えられます。

具体的な解決策

望ましい結果を達成するには、各置換を処理する関数:

var str = "I have a cat, a dog, and a goat.";
var mapObj = {
   cat:"dog",
   dog:"goat",
   goat:"cat"
};
str = str.replace(/cat|dog|goat/gi, function(matched){
  return mapObj[matched];
});

// Output: "I have a dog, a goat, and a cat"
ログイン後にコピー

このアプローチでは、マップ オブジェクト (mapObj) を作成します。置換される文字列のキーと値のペア。次に、これらの文字列のいずれかに一致する正規表現を使用し、それらをマップ オブジェクトの対応する値に置き換えます。

ソリューションの一般化

このアプローチを一般化するには、正規表現を動的に作成し、必要に応じてマップ オブジェクトを更新できます。

var mapObj = {cat:"dog",dog:"goat",goat:"cat"};

var re = new RegExp(Object.keys(mapObj).join("|"),"gi"); 
str = str.replace(re, function(matched){
  return mapObj[matched];
});
ログイン後にコピー

このアプローチにより、置換ペアを追加または削除できます。正規表現自体を変更する必要はありません。

再利用可能な関数

プロセスをさらに抽象化するには、再利用可能な関数を作成できます。

function replaceAll(str,mapObj){
    var re = new RegExp(Object.keys(mapObj).join("|"),"gi");

    return str.replace(re, function(matched){
        return mapObj[matched.toLowerCase()];
    });
}
ログイン後にコピー

この関数を使用して、任意の文字列内の複数の文字列を他の複数の文字列に置き換えることができます。

以上がJavaScript で複数の文字列置換を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート