JavaScript 多行文字列の扱い
JavaScript での複数行文字列の変数への代入
JavaScript では、複数行の文字列を一つの変数に代入する方法はいくつかあります。最も一般的な方法は、テンプレートリテラルと呼ばれる方法です。
テンプレートリテラルによる複数行文字列
テンプレートリテラルは、バッククォート(`)で囲まれた文字列です。改行やインデントをそのまま保持することができ、非常に便利です。
let multilineString = `これは
複数行の
文字列です。`;
テンプレートリテラル以外にも、以下の方法があります。
- バックスラッシュによる改行のエスケープ
let multilineString = "これは\
- プラス演算子による連結
let multilineString = "これは\n" + "複数行の\n" + "文字列です。";
複数行の
文字列です。";
**注意:** プラス演算子やバックスラッシュによる方法は、可読性が低く、エラーが発生しやすい可能性があるため、一般的にはテンプレートリテラルが推奨されます。
### 備考
* テンプレートリテラルは、ES6 (ECMAScript 6) で導入されました。
* テンプレートリテラルは、文字列の中に変数を埋め込むこともできます。
* バックスラッシュは、改行だけでなく、他の特殊文字をエスケープするためにも使用されます。
**例:**
```javascript
let name = "太郎";
let greeting = `こんにちは、${name}さん!`;
console.log(greeting); // 出力: こんにちは、太郎さん!
テンプレートリテラル
最も一般的な方法で、読みやすく、便利な方法です。バッククォート(`)で囲みます。
let multilineString = `これは
複数行の
文字列です。
インデントもそのまま保持されます。`;
- 説明
let multilineString
で変数を宣言します。=
の右側にバッククォートで囲まれた複数行の文字列を代入します。- 改行やインデントがそのまま文字列に含まれます。
プラス演算子による連結
古い方法で、可読性が低く、エラーが発生しやすい可能性があります。
let multilineString = "これは\n" +
"複数行の\n" +
"文字列です。";
- 説明
=
の右側に複数の文字列を+
演算子で連結します。\n
は改行を表します。
バックスラッシュによる改行のエスケープ
あまり使用されませんが、知っておくと良い方法です。
let multilineString = "これは\
複数行の\
文字列です。";
- 説明
=
の右側に文字列を記述し、行末にバックスラッシュ (\
) を付けて改行をエスケープします。
備考
- バックスラッシュは、改行だけでなく他の特殊文字もエスケープできます。
- テンプレートリテラルでは、
${}
内に式を埋め込むことができます。 - テンプレートリテラルは ES6 から導入されました。
例
let name = "太郎";
let greeting = `こんにちは、${name}さん!`;
console.log(greeting); // 出力: こんにちは、太郎さん!
- 説明
name
という変数に "太郎" を代入します。greeting
という変数にテンプレートリテラルを使って文字列を代入し、${name}
で変数の値を埋め込みます。console.log
でgreeting
の内容を出力します。
テンプレートリテラル以外の方法
これまで、テンプレートリテラルが最も推奨される方法として紹介してきましたが、他にもいくつかの方法が存在します。ただし、これらの方法は一般的に可読性が低く、エラーが発生しやすい可能性があるため、注意が必要です。
複数の文字列を +
演算子で連結することで、複数行の文字列を作成できます。
let multilineString = "これは\n" +
"複数行の\n" +
"文字列です。";
- 説明
行末にバックスラッシュ (\
) を付けることで、改行をエスケープし、次の行と連結することができます。
let multilineString = "これは\
複数行の\
文字列です。";
- 説明
重要な注意点
- 推奨されない
一般的に、これらの方法は推奨されません。テンプレートリテラルを使用することを優先してください。 - エラーの可能性
特にプラス演算子による連結では、誤って+
を省略したり、改行を忘れたりするとエラーが発生する可能性があります。 - 可読性
テンプレートリテラルに比べて、これらの方法は可読性が低くなります。
javascript string multiline