JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで文字列内のすべての出現箇所を置き換える方法を徹底解説

JavaScriptで文字列の中にある特定の語句をすべて別の語句に置き換えたい場面はよくあります。本記事では、replace()メソッドと正規表現のgフラグを組み合わせて、文字列内のすべての出現箇所を一括で置き換える方法を、実際のコード例とともにわかりやすく解説します。

replace()メソッドの基本的な使い方

replace()メソッドは、文字列オブジェクトに対して呼び出し、第1引数に検索対象(文字列または正規表現)、第2引数に置き換え後の文字列を指定します。

ただし、ここで重要な注意点があります。replace()はデフォルトでは最初に見つかった1箇所だけを置き換えます。文字列中のすべての出現箇所を置き換えるには、正規表現にグローバル検索を意味する g フラグを付ける必要があります。

サンプルコード:すべての「loves」を「likes」に置き換える

<html>
<body>
<script>
var str1 = 'John loves studying. He loves Football too!';
var str2 = str1.replace(/loves/g, "likes");
document.write(str2);
</script>
</body>
</html>

実行結果

John likes studying. He likes Football too!

コードのポイント

  • /loves/g — スラッシュで囲まれた部分が正規表現です。末尾の g フラグにより、一致したすべての箇所が置き換えの対象になります。
  • g フラグを付けずに /loves/ とした場合、置き換えられるのは最初の「loves」のみで、結果は「John likes studying. He loves Football too!」となります。
  • 元の文字列 str1 は変更されず、置き換え後の新しい文字列が str2 に代入されます。JavaScriptの文字列は不変(イミュータブル)であるためです。

大文字・小文字を区別せずに置き換えるには?

「Loves」「LOVES」など大文字・小文字の違いを無視して置き換えたい場合は、i フラグ(ignore case)を g フラグと組み合わせて使用します。

var result = str.replace(/loves/gi, "likes");

モダンな代替手段:replaceAll()メソッド

ES2021以降では、より直感的な replaceAll() メソッドが利用できます。正規表現を使わずに、すべての出現箇所を簡単に置き換えられます。

var str2 = str1.replaceAll("loves", "likes");
// 結果: John likes studying. He likes Football too!

古いブラウザをサポートする必要がある場合は replace(/loves/g, ...) を、最新の環境が対象であれば replaceAll() を使うとよいでしょう。

まとめ

  • JavaScriptですべての出現箇所を置き換えるには、replace() メソッドに正規表現の g フラグを付けて使用します。
  • g フラグがないと最初の1箇所しか置き換えられない点に注意しましょう。
  • 大文字小文字を無視したい場合は i フラグを追加します。
  • ES2021以降の環境では、よりシンプルな replaceAll() メソッドも選択肢になります。
  1. 【JavaScript】否定先読みを使って、別の文字に続く特殊文字をすべて置き換える方法

    はじめにJavaScriptで文字列を処理していると、「<」などの特殊文字が連続して含まれているケースに遭遇することがあります。本記事では、否定先読み(ネガティブ・ルックアヘッド)を使った正規表現と replace() メソッドを組み合わせて、特殊文字の直後に別の文字が続く場合のみスペースを挿入する方法を解説します。まず、例として次のように特殊文字「<」が連続した文字列を用意します。var sentence = <My<Name<is<John<Doe;replace() と正規表現による置換処理この問題を解決するには、replace() メソッドと正

  2. Pythonで文字列内のすべての出現箇所を別の文字列に置換する方法

    str.replace()メソッドを使う方法Pythonの文字列クラス(str)には、replaceメソッドが標準で用意されています。このメソッドは「置換したい文字列」と「置換後の文字列」を引数として受け取り、文字列オブジェクトに対して呼び出すことで、該当するすべての出現箇所を一括して置き換えることができます。たとえば、次のように呼び出すと、文字列中のすべての「no」が「yes」に置き換えられます。>>> no one knows how.replace(no, yes) yes one kyesws how >>> chihuahua.replace(hu