replace メソッド
正規表現または検索文字列を使って置換された文字列のコピーを返します。
stringObj.replace(rgExp, replaceText)
引数
- stringObj
必ず指定します。置換処理の対象となる String オブジェクトの名前または文字列リテラルを指定します。この文字列は、replace メソッドにより変更されません。 - rgExp
必ず指定します。正規表現パターンおよび適用できるフラグを含む Regular Expression オブジェクトのインスタンスを指定します。String オブジェクトの名前またはリテラルを指定することもできます。rgExp が Regular Expression オブジェクトのインスタンスでない場合は文字列に変換され、完全に一致する文字列の検索が実行されます。文字列から正規表現への変換は行われません。 - replaceText
必ず指定します。検索で見つかった部分を置換するテキストが入った String オブジェクトまたは文字列リテラルを指定します。JScript 5.5 以降では、置換するテキストを返す関数を指定することもできます。
解説
replace メソッドは、指定された置換を終えた後の stringObj のコピーを返します。
次の表にある変数を使用して、最後に検出した一致やその文字列を指定できます。一致変数は、テキストの置換処理において、対象を動的に指定する必要がある場合に使用します。
文字 | 意味 |
---|---|
$$ | $ (JScript 5.5 以降) |
$& | stringObj に、全体が一致するパターンを指定します (JScript 5.5 以降)。 |
$` | $& より前方にある stringObj の部分を取得します (JScript 5.5 以降)。 |
$' | $& より後方にある stringObj の部分を取得します (JScript 5.5 以降)。 |
$n | サブ文字列の中で n 番目に検出されたものを取得します。n には 1 桁の 10 進数値 (1 ~ 9) を指定します (JScript 5.5 以降)。 |
$nn | サブ文字列の中で nn 番目に検出されたものを取得します。nn には 2 桁の 10 進数値 (01 ~ 99) を指定します (JScript 5.5 以降)。 |
replaceText が関数の場合、一致する各文字列に対してこの関数が m + 3 個の引数を伴って呼び出されます。m は、rgExp の中で使用されている取得を示す開きかっこの数です。1 個目の引数は一致したサブ文字列です。次の引数は、検索結果そのものです。m + 2 個目の引数は stringObj で一致したオフセットを表し、m + 3 個目の引数は stringObj を表します。結果は、該当する関数呼び出しの戻り値をそれぞれ一致する文字列と置換した文字列値で返されます。
replace メソッドを実行すると、グローバルな RegExp オブジェクトのプロパティが更新されます。
使用例
次のコードは、replace メソッドの使用例です。"A" という単語を "The" という単語の最初のインスタンスに置換します。
function ReplaceDemo(){
var r, re; //変数を宣言します。
var ss = "The man hit the ball with the bat.\n";
ss += "while the fielder caught the ball with the glove.";
re = /The/g; //正規表現パターンを作成します。
r = ss.replace(re, "A"); //"A" を "The" に置換します。
return(r); //置換後の文字列を返します。
}
さらに、replace メソッドでは、パターンに一致する文字列どうしを置換することができます。次のコードは、文字列の中の単語の各ペアを交換する例です。
function ReplaceDemo(){
var r, re; //変数を宣言します。
var ss = "The rain in Spain falls mainly in the plain.";
re = /(\S+)(\s+)(\S+)/g; //正規表現パターンを作成します。
r = ss.replace(re, "$3$2$1"); // 単語の各ペアを交換します。
return(r); // 結果の文字列を返します。
}
次のコードは、replaceText に関数を使用して華氏を摂氏に変換する例です。JScript 5.5 以降で使用できます。この関数は、"F" の直後に数値が続く文字列 (次の例では、"Water freezes at 32F and boils at 212F.") で機能します。
function f2c(s) {
var test = /(\d+(\.\d*)?)F\b/g; // パターンを初期化します。
return(s.replace
(test,
function($0,$1,$2) {
return((($1-32) * 5/9) + "C");
}
)
);
}
document.write(f2c("Water freezes at 32F and boils at 212F."));
必要条件
参照
exec メソッド | match メソッド | RegExp オブジェクト | search メソッド | String Object メソッド | test メソッド
対象: String オブジェクト