【JSリファレンス】String.raw()

更新日:2024/06/14

String.raw()は、Stringコンストラクターのメソッドです。
主にテンプレートリテラルのタグ関数として使用され、生の文字(\nなどのエスケープ文字をそのまま使用)で文字列を生成します。

 

■構文

String.raw ( template, ...substitutions )
  1. template: rawプロパティを持つオブジェクト
    rawプロパティの値は、文字列を要素に持つ配列

  2. ...substitutions: templateの要素間に挿入される値
生成された文字列

 

■使用例

const template = {
    raw: [
        "こんにちは",
        "。",
        "は",
        "ですね"
    ]
};

console.log( 
    String.raw( 
        template , "太郎さん" , "今日" , "いい天気"
    )
); // こんにちは太郎さん。今日はいい天気ですね

 

■備考

タグ付きテンプレートリテラル

テンプレートリテラルの前に、関数名を記述すると、その関数(タグ関数)が呼び出されます。
タグ関数は、String.raw()と同じ形式で記述します。

 

■構文

タグ関数名( template, ...substitutions )

このとき引数templateは、文字列を要素に持つ配列です。
この文字列内の \nなどの文字は通常の文字列の扱いと同じように対応するコードに変換されます。

さらに引数templateは、rawプロパティを持ちます。
こちらは、\nなどの文字を変換せずに各々単独の文字として生成した生の文字列の配列です。

次のようなイメージです。

template [
  [0]:文字列
  [1]:文字列
  ・・・・
  raw:[
    [0]:生文字列
    [1]:生文字列
    ・・・
  ]
]

次のコードは、タグ関数の使用例です。

const tagFunc = (template, ...substitutions)=>{
    console.log( template ); 
       // [ "こんにちは", "。\n", "は", "ですね" ]
    console.log( template.raw );  
       // [ "こんにちは", "。\\n", "は", "ですね" ]
    console.log( substitutions ); 
       // [ '太郎さん', '今日', 'いい天気' ]

    const subLength = substitutions.length;
    return template.raw.reduce( (r,e,index)=>{
            r += e + ( index < subLength 
                ?  substitutions[index] : "" );
            return r;
        },"");
}

console.log( 
   [ tagFunc`こんにちは${ "太郎さん" }。\n${ "今日" }${ "いい天気" }ですね` ]
); // [ "こんにちは太郎さん。\\n今日はいい天気ですね" ]

※配列中の文字列の改行コードは \n で表示され、文字列中の改行コードは改行されます。
(\\nは、"\" と "n" の二つの文字です。)

最後のコンソール出力は、わかりやすいように配列化しています。

 

関連ページ

更新日:2024/06/14

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。