JavaScript replaceメソッドについて
JavaScript replace()メソッドについて
JavaScriptでのreplace()メソッドでは条件に合致した文字列の一部またはすべてをreplacementで置き換えて文字列を置換することができます。例えば次のような日付や名前などを変換するような場合に使用したりします
例
構文
例
- var a(対象文字列) = "abcdefg";
- var string(変更後の文字列) = a.replace(a,b);
- console.log(string);
- bbcdefg
今回の例では対象文字列の「a」を「b」に変換するプログラムを記述しました。このようなreplace()構文を使用することによって「対象文字列」内に存在する文字列を検索して置換することができます。
特殊な文字列を使用する場合の表記方法
JavaScriptにて下記に特殊な文字列を使用する場合の記述方法を記載します。
関数による文字列の変換
JavaScriptのreplace()メソッドでは第二引数に関数を指定して文字列を変換させることができます。関数の呼び出し結果は文字列を返却するように指定しなければなりません。関数の実行は文字列が合致した場合のみ行われます。以下に例文を記載します。
- var strRep = 'replace'
- function replacer(match, p1, p2, p3, offset, string) {
- return [p1, p2, p3].join(' - ');
- }
- var newString = 'abc12345#$*%'.replace(/([^\d]*)(\d*)([^\w]*)/, replacer);
- console.log(newString); // abc - 12345 - #$*%
このように記述することができる。 JavaScriptのreplace()メソッドでは関数が使用できます。その場合の引数は以下のように表します。
- match → 検索に合致した全体の文字列
- pn → 検索した文字列のn番目に検索された文字列(この場合はp1 = ^\d p2 = \d p3 = ^\w に合致した文字列となっている)
- offset → 合致した文字列の位置を示します。
- string → 文字列全体(abc12345#$*%)を格納しています。
また、上記では正規表現と呼ばれる表記方法が記述されています。上記で使用された正規表現は「^\d」「\d*」「^\w」であり
- ^\d →[0-9]以外の文字列
- \d →[0-9]に合致する文字列
- ^\w →[a-zA-Z_0-9]以外の文字列
例
例: 置換にglobal(グローバル)とigonore(無視)を使用
下記の例は、正規表現にglobalとigonoreフラグが含まれているため、 replaceは文字列内に存在する各'apples'を'oranges'に置換することが出来ます。
- var re = /apples/gi;
- var str = "Apples are round, and apples are juicy.";
- var newstr = str.replace(re, "oranges");
- print(newstr);
下記の例では、 1つ目の引数には文字列が使用されており、globalとignoreのフラグは、flags引数として指定されています。
- var str = "Apples are round, and apples are juicy.";
- var newstr = str.replace("apples", "oranges", "gi");
- print(newstr);
どちらの例も、"oranges are round, and oranges are juicy."を出力します。
例: replace内での正規表現の定義
下記の例では、正規表現はreplace内にigonoreフラグ付きで定義されています。
- var str = "Twas the night before Xmas...";
- var newstr = str.replace(/xmas/i, "Christmas");
- print(newstr);
これは、"Twas the night before Christmas..."を出力します。
例: 文字列内の単語の入れ替え
下記のスクリプトは、文字列内の単語を入れ替えます。 これを実現するために、$1と$2の置換パターンが使用されています。
- var re = /(\w+)\s(\w+)/;
- var str = "John Smith";
- var newstr = str.replace(re, "$2, $1");
- print(newstr);
これは、"Smith, John"を出力します。