JavaScript

String.raw() メソッド

 編集:2022.08.16 by T.A.

文字列の折り込みをします。またはテンプレート文字列処理をします。

この関数は Python の文字列リテラルの r 接頭辞や C# の文字列リテラルの @ 接頭辞に似ています(それでも違いがあります。この問題に関するスレッドの説明を参照してください)。この関数は、テンプレート文字列の生の文字列形式を取得するために使用されます。つまり、置換(例えば ${foo})は行われますが、エスケープ(例えば \n)は実行されません。

織り込む:

string= String.raw(callSite, ...substitutions)
callSite { raw: 'string' } のような、よく形成されたテンプレート呼び出しサイト オブジェクトです。
substitutions 置換される値が含まれます。

テンプレート文字列処理:

string= String.raw`templateString`
templateString です。必要に応じて「${}」を置換します。

`」は0x60。

戻り値

処理された String。

例外
TypeError
第 1 引数が正常に形成されていないオブジェクトの場合、TypeError が発生します。
解説

ほとんどの場合、String.raw() はテンプレート文字列とともに使用されます。上記の最初の構文は、JavaScript エンジンが(他のタグ関数のように)適切な引数で呼び出すので、実際に使用されます。

String.raw() はテンプレート文字列の唯一の組込みタグ関数です。既定のテンプレート関数のように動作し、連結を行います。通常の JavaScript コードで再実装することができます。

String.raw() の使用
D=String.raw`Hi\n${2+3}!`; //='Hi\n5!'

「Hi」の後の文字は改行文字ではありません。「\」と「n」は 2 文字です。

D=String.raw`Hi\u000A!`; //='Hi\u000A!'

こっちも一緒で、今回は、\、u、0、0、0、A の 6 文字を取得します。

すべての種類のエスケープ文字は無効になり、バックスラッシュが出力文字列に表示されます。

これは、文字列の .length プロパティをチェックすることで確認できます。

let name='Bob';
D=String.raw`Hi\n${name}!`; //='Hi\nBob!'。置換が処理されます。

通常、String.raw() を関数として呼び出すことはありません、

ただし、`foo${2 + 3}bar${'Java' + 'Script'}baz` をシミュレートするには、次のようにします:

D=String.raw({
  raw: ['foo', 'bar', 'baz']
}, 2 + 3, 'Java' + 'Script'); //='foo5barJavaScriptbaz'

最初の引数が「raw」プロパティを持つオブジェクトであることに注意してください、

その値は、テンプレート リテラルで区切られた文字列を表す iterable です。

残りの引数は織り込む文字列です。

最初の引数の「raw」値は、反復可能な任意の値にすることができます。文字列でも!

例えば、'test' は ['t', 'e', 's', 't'] として扱われます。

以下は `t${0}e${1}s${2}t` と同等です:

D=String.raw({ raw: 'test' }, 0, 1, 2); //='t0e1s2t'

テスト