文字列の置換

文字列の置換を行うには、string.replaceメソッドを使用します。

構文

string.replace(sub string, rep[, flags]);

または

string.replace(sub string, function[, flags]);
引数名 説明
第一引数
必須
sub string string|RexExp 置換前の文字列または正規表現(検索文字列)
第二引数
必須
rep string|function 置換後の文字列または置換後に処理する関数
第三引数 flags string 検索オプション

戻り値

置換された文字列を返します。

サンプルコード

JavaScript

var str = '0123456789abcdefgあいうえお';

// 通常の置換
var result1 = str.replace('123', 'いちにさん');

// 正規表現での置換
var result2 = str.replace(/123(456)/, 'いちにさん$1');

// 関数処理
var result3 = str.replace('abc', function(matchString) {
	// 見つかった文字列を大文字にして戻す
	return matchString.toUpperCase();
});

// 関数処理(正規表現)
var result4 = str.replace(/123(456)(789)/, function(matchAllString, matchFirstString, matchSecondString) {
	return 'あいう';
});

第二引数が関数の場合は、functionの第一引数には検索で一致した全文字列が入ってきます。
functionの第二引数以降は正規表現で指定した場合、グループ指定した分だけ入ってきます。

検索オプション

検索オプションは次の通りです。

フラグ値 説明
g 複数に一致(グループマッチ)
i 大文字小文字の区別を無視
m 複数行を越えた一致(第一引数が文字列である場合のみ)

JavaScript

var str    = '0123456789abcdefgあいうえおABCDEFG',
    result = str.replace('abc', 'いちにさん', 'ig');

alert(result);

複数の文字列を置換

複数の文字列を置換する場合の方法です。

関数定義

JavaScript

/**
 * 複数の文字列を置換
 * @param {string|*[]} searchArr 置換前の文字列または正規表現(検索文字列)の配列
 * @param {string[]} replaceArr 置換後の文字列の配列
 * @param {string} value 置換対象の文字列
 * @param {string} [flags] 検索オプション
 * @return {string} 置換された文字列を返す
 */
var multiReplace = function(searchArr, replaceArr, value[, flags]) {
	if (typeof searchArr !== 'object' || !('length' in searchArr)) return value;
	if (typeof replaceArr !== 'object' || !('length' in replaceArr)) return value;
	if (typeof value !== 'string') return value;
	if (searchArr.length === 0 || replaceArr.length === 0 || value === '') return value;

	for (var i = 0, len = searchArr.length; i < len; i++) {
		if (!searchArr[i] || !replaceArr[i]) continue;

		if (flags) {
			value = value.replace(searchArr[i], replaceArr[i], flags);
		} else {
			value = value.replace(searchArr[i], replaceArr[i]);
		}
	}

	return value;
};

使い方

引数

引数名 説明
第一引数
必須
searchArr string | *[] 置換前の文字列または正規表現(検索文字列)の配列
第二引数
必須
replaceArr string[] 置換後の文字列の配列
第三引数
必須
value string 置換対象の文字列
第四引数 flags string 検索オプション

戻り値

置換された文字列を返します。

サンプルコード

JavaScript

var str       = '0123456789abcdefgあいうえお',
    searchArr = ['123', 'abc'],
    relaceArr = ['いちにさん', 'えいびーしー'];

var result = multiReplace(searchArr, replaceArr, str);

alert(result);

JavaScript逆引きリファレンス一覧へ戻る