JavaScriptでのreplaceを使った文字列置換方法を紹介|replaceでの文字列置換方法を学ぼう!

- システム
エンジニア - JavaScriptでは関数を利用した文字列の置換方法があることを知りましたが、具体的な方法を教えてください。
- プロジェクト
マネージャー - かしこまりました。ここではreplace関数を利用した文字列置換方法を見ていきましょう。
JavaScriptでのreplaceを使った文字列置換方法
今回は、JavaScriptでのreplace関数を使った文字列置換方法について説明します。
replace関数を使用することで、以下のようなことができます。
・最初にマッチする文字列のみを置換
・マッチするすべての文字列を置換
・最後にマッチする文字列のみを置換
また、マッチする文字列を別の関数に渡すこともできます。replace関数を使った文字列置換方法に興味のある方はぜひご覧ください。
replaceの基本的な使い方
JavaScriptでのreplaceの基本的な使い方について紹介します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
|
var str = "hoge piyo fuga";
var result1 = str.replace('hoge', 'HOGE');
var result2 = str.replace(' ', ',');
console.log(result1); // HOGE piyo fuga
console.log(result2); // hoge,piyo fuga
|
実行結果は以下のようになります。
1
2
|
HOGE piyo fuga
hoge,piyo fuga
|
replace関数は以下のように記述します。
replace(‘指定文字列’, ‘置換文字列’)
result1を見ると、指定文字列が置換対象文字列に置換されていることが分かります。しかし、result2を見ると、指定文字列が1つしか置換されていません。replace関数に文字列を指定しただけでは、最初にマッチした文字が置換されます。
正規表現
先ほどのサンプルでは、指定文字列が1つしか置換されませんでした。ここでは、すべての指定文字列を置換する方法を紹介します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
|
var str = "hoge piyo fuga";
var result = str.replace(new RegExp(" ","g"), ",");
console.log(result); // hoge,piyo,fuga
|
実行結果は以下のようになります。
1
|
hoge,piyo,fuga
|
RegExpオブジェクトにグローバルマッチのフラグ(g)を付与することで、すべての指定文字列を置換できます。
また、以下のように記述することもできます。
1
2
3
4
5
6
7
|
var str = "hoge piyo fuga";
var result = str.replace(/ /g, ",");
console.log(result); // hoge,piyo,fuga
|
このように、JavaScriptではreplace関数に正規表現を指定することで、すべての指定文字列を置換できます。
最後にマッチした文字列を置換
replace関数に文字列を指定すると最初にマッチした文字列のみ置換されました。ここでは、最後にマッチした文字列のみを置換する方法を紹介します。
lastIndexOf関数とslice関数を使用します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
var str = 'hoge piyo fuga';
var word = ' ';
var newWord = ',';
// 最後に登場する" "のインデックス
var n = str.lastIndexOf(word);
// str.slice(0, n)でnまでの文字列を切り出す
// str.slice(n).replace(word, newWord)でn以降の文字列を切り出し、置換する
var result = str.slice(0, n) + str.slice(n).replace(word, newWord);
console.log(result); // hoge piyo,fuga
|
実行結果は以下のようになります。
1
|
hoge piyo,fuga
|
lastIndexOf関数で、最後に登場する” “のインデックスを求めます。次にslice関数で、文字列を分割し、replace関数で置換しています。
こうすることで、最後にマッチした文字列のみを置換できます。
split + joinで置換
JavaScriptでのreplace関数以外での置換方法を紹介します。split関数とjoin関数で置換します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
|
var str = "hoge piyo fuga";
var result = str.split(' ').join(',');
console.log(result); // hoge,piyo,fuga
|
実行結果は以下のようになります。
1
|
hoge,piyo,fuga
|
split関数で’ ‘文字で配列に分割し、join関数で’,’で連結します。そうすることで、replace関数と同じ挙動となります。
このように、JavaScriptではsplit + joinでも置換できます。
置換パターン
JavaScriptでは、正規表現にマッチした文字列を表す$&という置換パターンで参照できます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
|
var str = "hoge piyo fuga";
var result1 = str.replace(/\w+/g, "($&)");
var result2 = str.replace(/\w+/g, "($&$&)");
console.log(result1); // (hoge) (piyo) (fuga)
console.log(result2); // (hogehoge) (piyopiyo) (fugafuga)
|
実行結果は以下のようになります。
1
2
|
(hoge) (piyo) (fuga)
(hogehoge) (piyopiyo) (fugafuga)
|
正規表現”\w”は、アンダーバーを含むどの英数字にもマッチします。つまり、[A-Za-z0-9_] に該当します。
文字列を正規表現で検索し、マッチした文字列を()で囲んでいます。result2のように”($&$&)”とすることで、マッチした文字列を繰り返しています。このように、JavaScriptでは、正規表現にマッチした文字列を表す$&という置換パターンで参照できます。
また、マッチした文字列を、$1 $2 … で参照することもできます。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
|
var str = "hoge piyo fuga";
var result1 = str.replace(/(\w+) (\w+) (\w+)/g, "$1,$2,$3");
var result2 = str.replace(/(\w+) (\w+) (\w+)/g, "$3,$2,$1");
console.log(result1); // hoge,piyo,fuga
console.log(result2); // fuga,piyo,hoge
|
実行結果は以下のようになります。
1
2
|
hoge,piyo,fuga
fuga,piyo,hoge
|
マッチした順に$1,$2,$3となります。
このように、JavaScriptでは、正規表現にマッチした文字列を表す$1,$2…という置換パターンで参照できます。
第2引数の関数指定
JavaScriptでは、replace関数の第2引数に関数を指定することもできます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
|
var str = "hoge piyo fuga";
var result = str.replace(/\w+/g, match => match.toUpperCase());
console.log(result); // HOGE PIYO FUGA
|
実行結果は以下のようになります。
1
|
HOGE PIYO FUGA
|
ここでは、マッチした文字列にtoUpperCase関数を実行して、大文字に変換しています。
このように、JavaScriptではreplace関数の第2引数に関数を指定することもできます。
- システム
エンジニア - マッチする文字列を指定することもできるんですね。
- プロジェクト
マネージャー - 他にも文字列置換の関数がありますので、色々とコードを書いてマスターしてください。
JavaScriptでreplaceを使って文字列置換してみよう
いかがでしたでしょうか。
JavaScriptでのreplace関数を使った文字列置換方法について説明しました。
replace関数を使用することで、以下のようなことができます。
・最初にマッチする文字列のみを置換
・マッチするすべての文字列を置換
・最後にマッチする文字列のみを置換
また、マッチする文字列を別の関数に渡すこともできます。
ぜひご自身でソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)