replace メソッド
更新 : 2007 年 11 月
正規表現または検索文字列を使って置換された文字列のコピーを返します。
function replace(rgExp : RegExp, replaceText : String) : String
引数
rgExp
必ず指定します。正規表現パターンおよび適用できるフラグを含む Regular Expression オブジェクトのインスタンスを指定します。String オブジェクトの名前またはリテラルを指定することもできます。rgExp が Regular Expression オブジェクトのインスタンスでない場合は文字列に変換され、完全に一致する文字列の検索が実行されます。文字列から正規表現への変換は行われません。replaceText
必ず指定します。現在の文字列オブジェクトで、rgExp と一致した部分と置き換えるテキストを格納する String オブジェクトまたは文字列リテラルを指定します。JScript 5.5 以降では、置換するテキストを返す関数を指定することもできます。
解説
replace メソッドは、指定された置換を終えた後の現在の文字列オブジェクトのコピーを返します。
次の表にある変数を使用して、最後に検出した一致やその文字列を指定できます。一致変数は、テキストの置換処理において、対象を動的に指定する必要がある場合に使用します。
文字 |
説明 |
---|---|
$$ |
$ (JScript 5.5 以降) |
$& |
現在の文字列オブジェクト内で、パターンが完全に一致した部分を表します。(JScript 5.5 以降) |
$` |
現在の文字列オブジェクトの先頭から $& の直前までの部分を表します。(JScript 5.5 以降) |
$' |
現在の文字列オブジェクトの、$& 以降の部分を表します。(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 個目の引数は現在の文字列オブジェクトで一致したオフセットを表し、m + 3 個目の引数は現在の文字列オブジェクトを表します。結果は、該当する関数呼び出しの戻り値をそれぞれ一致する文字列と置換した文字列値で返されます。
replace メソッドを実行すると、グローバルなオブジェクト RegExp のプロパティが更新されます。
使用例
replace メソッドを使用して、単語 "The" という単語の最初のインスタンスを単語 "A" に置換する例を次に示します。使用している正規表現のパターンでは大文字と小文字が区別されるため、"The" の最初のインスタンスだけが置換されます。
function ReplaceDemo(){
var r, re; //Declare variables.
var ss = "The man hit the ball with the bat.\n";
ss += "while the fielder caught the ball with the glove.";
re = /The/g; //Create regular expression pattern.
r = ss.replace(re, "A"); //Replace "The" with "A".
return(r); //Return string with replacement made.
}
さらに、replace メソッドでは、パターンに一致する文字列どうしを置換できます。文字列の中の単語の各ペアを交換する例を次に示します。
function ReplaceDemo(){
var r, re; //Declare variables.
var ss = "The rain in Spain falls mainly in the plain.";
re = /(\S+)(\s+)(\S+)/g; //Create regular expression pattern.
r = ss.replace(re, "$3$2$1"); //Swap each pair of words.
return(r); //Return resulting string.
}
replaceTextに関数を使用して華氏を摂氏に変換する例を次に示します。JScript 5.5 以降で使用できます。この関数は、数値の直後に "F" が続く文字列 (次の例では、"Water freezes at 32F and boils at 212F.") で機能します。
function f2c(s) {
var test = /(\d+(\.\d*)?)F\b/g; //Initialize pattern.
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."));