JavaScript - 文字列の置換(replace、正規表現の置換)

JavaScriptの文字列で特定の文字を置き換える方法を紹介します。 String型は replace()関数を提供し、これを利用して文字列の特定の文字列を別の文字列に変換できます。 replace() は最初に検索される 1 つの文字列だけを変換しますが、複数の文字列を変換するときは正規表現を利用して一致するすべての文字列を変換できます。

1. replace() で文字列を置き換える

replace(old, new) は文字列の old を new に置き換えた文字列を返します。

let str = 'Hello world, Java';

str = str.replace('Java', 'JavaScript');
console.log(str);

Output:

Hello world, JavaScript

置換する文字列が複数あっても、最初に見つけた文字列 1 つだけ変換します。

let str = 'Hello world, Java, Java, Java';

str = str.replace('Java', 'JavaScript');
console.log(str);

Output:

Hello world, JavaScript, Java, Java

2.正規表現を使用してすべての文字列を置き換える

文字列内に変更したい文字列を複数あり、すべての文字列を変更したい場合は、正規表現を使用してすべての文字列を変更できます。 replace(/[old str]/g, '[new str]') は文字列内のすべての old stringnew string に変換します。 以下の例では、 /Java/g が正規表現ですが、正規表現は /Pattern/flag のようにパターンとフラグで構成されています。 そして注意すべき点は、探したい文字列に引用符を入力しないでください。

以下の例は、文字列の Java をすべて JavaScript に変換する例です。フラグ g はすべての文字列を変換することを意味します。

let str = 'Hello world, Java, Java, Java';

str = str.replace(/Java/g, 'JavaScript');
console.log(str);

Output:

Hello world, JavaScript, JavaScript, JavaScript

3. 大文字と小文字を区別せずに文字列置換

以下の例は文字列を置き換えません。その理由は大文字と小文字を区別するので、 javaと同じ文字列がないので何も変更しません。

let str = 'Hello world, Java, Java, Java';

str = str.replace(/java/g, 'JavaScript');
console.log(str);

Output:

Hello world, Java, Java, Java

大文字と小文字を区別せずに変更するには、以下のようにフラグに iを追加してください。結果を見ると、すべての文字列が変換されたことを確認できます。

let str = 'Hello world, Java, Java, Java';

str = str.replace(/java/gi, 'JavaScript');
console.log(str);

Output:

Hello world, JavaScript, JavaScript, JavaScript

4. すべての数字をスペースで置き換える

文字列内のすべての数字を削除するときは、数字をスペースで置き換えることができます。 パターン [1-9] は 1 から 9 までの数字を意味し、この範囲の数字に該当すれば空白で置換します。

let str = 'This123is456Java789script';

str = str.replace(/[1-9]/gi, '');
console.log(str);

Output:

ThisisJavascript

5. 連続した数字を1文字に置き換える

以下の例のパターンでは、+は1つ以上の文字パターンです。 [1-9]パターンは1つの数字を意味しますが、[1-9]+は連続した数字を意味します。 以下の例では、 123456789が1つのパターンで検索され、それぞれ @に置き換えられます。 +がない場合、9つの数字は別々のパターンとして認識され、9つの @に置き換えられます。

let str = 'This123is456Java789script';

str = str.replace(/[1-9]+/gi, '@');
console.log(str);

Output:

This@is@Java@script

6. より正規表現の例

正規表現を学ぶのは簡単ではありませんが、複数のプログラミング言語で同じ規則で使用されます。現在の正規表現が慣れていない場合は、どのような原理で動作するかを基本的な内容だけを先に勉強し、後で実装に必要な内容があるときにそれに関連するパターンを探して学習してもよいようです。

おっしゃったように正規表現の内容は膨大で、この文は replace() を紹介する文であるため、正規表現の詳細は込めませんでした。 Mozilla - Regular Expressionsページを参照しても良いし、Googleで正規表現で検索すると様々な資料があります。

codechachaCopyright ©2019 codechacha