replace メソッド
正規表現または検索文字列を使って置換された文字列のコピーを返します。
function replace(rgExp : RegExp, replaceText : String) : String
引数
rgExp
必ず指定します。 正規表現パターンおよび適用できるフラグを含む Regular Expression オブジェクトのインスタンスを指定します。 String オブジェクトの名前またはリテラルを指定することもできます。 rgExp が Regular Expression オブジェクトのインスタンスでない場合は文字列に変換され、完全に一致する文字列の検索が実行されます。文字列から正規表現への変換は行われません。replaceText
必ず指定します。 現在の文字列オブジェクトで、rgExp と一致した部分と置き換えるテキストを格納する String オブジェクトまたは文字列リテラルを指定します。 JScript 5.5 以降では、replaceText 引数で、置換するテキストを返す関数を指定することもできます。
解説
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 引数は、検索結果そのものです。 m + 2 個目の引数は現在の文字列オブジェクトで一致したオフセットを表し、m + 3 個目の引数は現在の文字列オブジェクトを表します。 結果は、該当する関数呼び出しの戻り値をそれぞれ一致する文字列と置換した文字列値で返されます。
replace メソッドを実行すると、グローバルなオブジェクト RegExp のプロパティが更新されます。
使用例
すべての "the" を "a" に置換する replace メソッドの使用例を次に示します。
function ReplaceDemo()
{
var s = "The batter hit the ball with the bat ";
s += "and the fielder caught the ball with the glove.";
// Replace "the" with "a".
var re = /the/g;
var r = s.replace(re, "a");
return(r);
}
さらに、replace メソッドでは、パターンに一致する文字列どうしを置換できます。 文字列の中の単語の各ペアを入れ替える例を次に示します。
function ReplaceDemo(){
var s = "The quick brown fox jumps over the lazy dog.";
// Create regular expression pattern.
var re = /(\S+)(\s+)(\S+)/g;
// Exchange each pair of words.
var r = s.replace(re, "$3$2$1");
return(r);
}
// Output: quick The fox brown over jumps lazy the dog.
華氏を摂氏に変換する例を次に示します。この例は JScript 5.5 以降で動作します。 この例は、置換テキストを返す関数を使用する方法を示します。 この関数の動作を確認するには、数値の直後に "F" が続く文字列 (たとえば、"Water boils at 212F") を渡します。
function f2c(s1) {
// Initialize pattern.
var test = /(\d+(\.\d*)?)F\b/g;
// Use a function for the replacement.
var s2 = s1.replace(test,
function($0,$1,$2)
{
return((($1-32) * 5/9) + "C");
}
)
return s2;
}
print(f2c("Water freezes at 32F and boils at 212F."));