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

【JavaScript】文字列内のスラッシュ(/)をバックスラッシュに一括置換する方法

JavaScriptでは、スラッシュ(/)を含む可能性のある文字列を受け取り、すべてのスラッシュをバックスラッシュ(\)に置き換えた新しい文字列を返す関数を実装したいというケースがあります。

例として、次のような文字列を考えてみます。

const str = 'Th/s str/ng /conta/ns some/ forward slas/hes';

この文字列に含まれるスラッシュを、すべてバックスラッシュへ変換していきましょう。

実装例

以下がそのコードです。

const str = 'Th/s str/ng /conta/ns some/ forward slas/hes';
const invertSlashes = str => {
    let res = '';
    for(let i = 0; i < str.length; i++){
        if(str[i] !== '/'){
            res += str[i];
            continue;
        };
        res += '\\';
    };
    return res;
};
console.log(invertSlashes(str));

コードのポイント

  • for文で文字列を1文字ずつ走査し、結果を格納する変数resに連結していきます。
  • スラッシュ(/)以外の文字は、そのままresへ追加します。
  • スラッシュだった場合は、代わりにバックスラッシュ('\\')を追加します。JavaScriptの文字列リテラル内ではバックスラッシュはエスケープ文字として扱われるため、2回続けて書く必要があります。

出力結果

コンソールには以下のように表示されます。

Th\s str\ng \conta\ns some\ forward slas\hes

補足:replace()メソッドでより簡潔に書く

同様の処理は、replace()メソッドと正規表現を組み合わせることで、わずか1行でも実現できます。

const result = str.replace(/\//g, '\\');
console.log(result);

正規表現「/\//g」は文字列中のすべてのスラッシュ(/)にマッチし、末尾のgフラグによって全箇所が一括置換されます。単純な置換処理であれば、ループを使うよりもこちらの方が可読性が高くおすすめです。

  1. JavaScriptでHTMLのdiv要素内のテキストを一括置換する方法

    Webページ上の複数の要素に対して、特定のテキストをまとめて差し替えたいケースはよくあります。たとえば、見出し(h2タグなど)に入っている文字列を、ページ内のすべてのspan要素に反映させたい場合などが該当します。 このような処理を実現するには、document.querySelectorAll() を使用します。あわせて getElementsByClassName() を組み合わせることで、クラス名を指定して対象のテキストを取得できます。 実装のポイント document.querySelectorAll(.my-main-div-class span) で、親要素(div)の中にあるす

  2. C++で部分文字列を別の部分文字列に置き換える方法

    この記事では、C++のstd::stringクラスが提供するreplace関数を使って、文字列内の一部(部分文字列)を別の文字列に置き換える方法を解説します。replace関数は、指定した位置posから始まるlen文字分の範囲を、新しい文字列で置き換えることができます。replace関数の基本構文string& replace (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen);主なパラメータの説明pos: 置き換えを開始する位置(挿入ポイント)です。len: 置き換え対象となる、削除する文字数を表