バッククォート、連結オペレータ、heredoc... Node.jsで複数行文字列を操る完全ガイド
Node.jsにおける複数行文字列の作り方
バッククォート(`)を使う
バッククォートは、ES6で導入されたテンプレートリテラルと呼ばれる機能の一部です。 複数行の文字列を記述する際に、変数埋め込みや改行を含む文字列を扱いやすくする利点があります。
const message = `これは
複数行の
文字列です。
改行も
ちゃんと
反映されます。`;
console.log(message);
連結オペレータ(+)を使って、複数の文字列リテラルを連結することで、複数行の文字列を作成できます。 ただし、改行を含めるにはエスケープシーケンス(\n
)が必要となります。
const message = 'これは' + '\n' +
'複数行の' + '\n' +
'文字列です。';
console.log(message);
heredocは、長い文字列を記述する際に便利な構文です。 特殊な記号(<<<)を用いて、改行を含む文字列を記述することができます。
const message = <<<HEREDOC
これは
複数行の
文字列です。
改行も
ちゃんと
反映されます。
HEREDOC;
console.log(message);
それぞれの方法の比較
方法 | メリット | デメリット | 備考 |
---|---|---|---|
バッククォート | - 変数埋め込みが簡単 - 改行を含む文字列を記述しやすい | - 比較的新しいため、古い環境では利用できない場合がある | ES6以降で使用可能 |
連結オペレータ | - シンプルでわかりやすい | - エスケープシーケンスが必要 | 改行を含める場合はエスケープが必要 |
heredoc | - 長い文字列を記述しやすい - 改行を含む文字列を記述しやすい | - 特殊な記号を使用する必要がある | heredoc記号の種類はエディタによって異なる場合がある |
上記のように、Node.jsで複数行の文字列を作成するには、様々な方法があります。 状況に応じて適切な方法を選択しましょう。
補足
- 上記の例では、文字列をコンソールに出力していますが、ファイルへの書き込みや他の処理にも同様に利用できます。
- 複数の方法を組み合わせて使用することも可能です。
複数行文字列のサンプルコード
バッククォートを使う
const message = `これは
複数行の
文字列です。
改行も
ちゃんと
反映されます。`;
console.log(message);
このコードでは、バッククォートを使って複数行の文字列を作成しています。 変数埋め込みも可能なので、以下のように変数を使ってメッセージを生成することもできます。
const name = 'Taro';
const message = `こんにちは、${name}さん!
こちらは
複数行の
メッセージです。`;
console.log(message);
連結オペレータを使う
const message = 'これは' + '\n' +
'複数行の' + '\n' +
'文字列です。';
console.log(message);
このコードでは、連結オペレータを使って複数の文字列リテラルを連結しています。 改行を含めるには、エスケープシーケンス(\n
)を使用しています。
heredocを使う
const message = <<<HEREDOC
これは
複数行の
文字列です。
改行も
ちゃんと
反映されます。
HEREDOC;
console.log(message);
このコードでは、heredocを使って複数行の文字列を作成しています。 特殊な記号(<<<)を用いて、改行を含む文字列を記述しています。
Node.jsで複数行文字列を作成するその他の方法
String.raw
関数は、文字列リテラル中のエスケープシーケンスをそのまま文字として解釈することができます。 改行を含む文字列を記述する場合などに便利です。
const message = String.raw`これは
複数行の
文字列です。
改行も
ちゃんと
反映されます。`;
console.log(message);
テンプレートエンジンを使う
EJSやPugなどのテンプレートエンジンを使用すると、HTMLファイルなどのテンプレートの中に変数埋め込みや条件分岐などのロジックを記述することができます。 複数行の文字列を生成する場合にも利用できます。
例:EJS
<!DOCTYPE html>
<html>
<head>
<title>複数行文字列</title>
</head>
<body>
<p>これは</p>
<p>複数行の</p>
<p>文字列です。</p>
</body>
</html>
const express = require('express');
const app = express();
const ejs = require('ejs');
app.set('view engine', 'ejs');
app.get('/', (req, res) => {
const message = '複数行の文字列';
res.render('index', { message });
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});
マルチラインコメントは、本来はコードをコメントアウトするために使用されますが、複数行の文字列を記述するのにも利用できます。 ただし、可読性が低くなるため、あくまでも緊急時や一時的な利用に留めることをおすすめします。
/*
これは
複数行の
文字列です。
改行も
ちゃんと
反映されます。
*/
console.log(/* 上記のコメント内容 */);
注意事項
上記で紹介した方法は、いずれも状況によって使い分ける必要があります。
- 可読性やメンテナンス性を考慮すると、バッククォートやheredocの使用が一般的です。
- 変数埋め込みが必要な場合は、バッククォートが適しています。
- 改行を含む文字列をシンプルに記述したい場合は、連結オペレータが便利です。
- テンプレートエンジンを使用する場合は、HTMLファイルなどのテンプレートを記述する必要があります。
- マルチラインコメントを使う場合は、可読性が低くなるため、あくまでも緊急時や一時的な利用に留めましょう。
string node.js multiline