Node.jsの登場により、JavaScriptでは複数行の文字列が必要になりつつあります。
すべての行の最後で\n\
を使用できることは既に知っていますが、それは私が望むものではありません。
ES6(およびNodeのバージョンがv4よりも大きい)の時点で、新しい「テンプレートリテラル」組み込み型がJavascriptに追加されました(バックティック「 `」で示されます)。次のような行ストリング
`this is a
single string`
'this is a\nsingle string'
に評価されます。
最初の行の末尾の改行isは結果の文字列に含まれることに注意してください。
テンプレートリテラルが追加され、プログラマは次のようにutil.format
または他のテンプレートを使用せずに値またはコードを文字列リテラルに直接注入できる文字列を構築できます。
let num=10;
console.log(`the result of ${num} plus ${num} is ${num + num}.`);
「10に10を加えた結果は20です」を出力します。コンソールに。
ノードの古いバージョンでは、「行継続」文字を使用して、次のような複数行の文字列を作成できます。
'this is a \
single string'
'this is a single string'
に評価されます。
最初の行の終わりの改行はnot結果の文字列に含まれていることに注意してください。
複数行の文字列はJavaScriptの現在の部分です(ES6以降)、node.js v4.0.0以降でサポートされています。
var text = `Lorem ipsum dolor
sit amet, consectetur
adipisicing
elit. `;
console.log(text);
複数行の文字列を意味するとき、正確に何を探していますか。
次のようなものを探していますか?
var str = "Some \
String \
Here";
「Some String Here」と表示されるのはどれですか?
その場合、上記は有効なJavascriptですが、これはそうではないことに注意してください。
var str = "Some \
String \
Here";
違いは何ですか? \
の後のスペース。デバッグを楽しんでください。
Node.jsの mstring モジュールを見てください。
これは、JavaScriptで複数行の文字列を使用できるシンプルな小さなモジュールです。
これを行うだけです:
var M = require('mstring')
var mystring = M(function(){/***
Ontario
Mining and
Forestry
Group
***/})
取得するため
mystring === "Ontario\nMining and\nForestry\nGroup"
そしてそれはほとんどそれです。
仕組み
Node.jsでは、関数の.toString
メソッドを呼び出すことができ、コメントを含む関数定義のソースコードが提供されます。正規表現はコメントの内容を取得します。はい、それはハックです。 Dominic Tarr からの使い捨てコメントに触発されました。
注:モジュール(2012/13/11現在)は、_***/
を閉じる前に空白を許可しないため、自分でハックする必要があります。
ここに投稿されているものとは別に、連結は最新のjavascript vmsに参加するよりもはるかに高速であると聞いたことがあります。意味:
var a =
[ "hey man, this is on a line",
"and this is on another",
"and this is on a third"
].join('\n');
以下よりも遅くなります。
var a = "hey man, this is on a line\n" +
"and this is on another\n" +
"and this is on a third";
特定の場合。 http://jsperf.com/string-concat-versus-array-join/
余談ですが、これは Coffeescript のより魅力的な機能の1つです。はい、はい、私は知っています、嫌いは嫌いです。
html = '''
<strong>
cup of coffeescript
</strong>
'''
特にHTMLスニペットに適しています。私はそれを使用する理由を言っていませんが、私はそれがecma landに着陸することを望みます:-(。
ジョシュ
CoffeeScriptを見てください: http://coffeescript.org
複数行の文字列、補間、配列の内包表記、その他多くのニースのものをサポートしています。
Io.jsを使用する場合、ECMAScript 6と同様に複数行の文字列をサポートします。
var a =
`this is
a multi-line
string`;
http://davidwalsh.name/es6-io の「新しい文字列メソッド」と http://kangax.github.io/compat-tableの「テンプレート文字列」を参照してください。/es6 / 追跡の互換性のため。
Vanilla Javasciptは複数行の文字列をサポートしていません。言語プリプロセッサは、最近では実現可能になっています。
最も人気のあるCoffeeScriptにはこの機能がありますが、最小限ではなく、新しい言語です。 Googleのトレーサコンパイラはスーパーセットとして言語に新しい機能を追加しますが、複数行の文字列は追加された機能の1つではないと思います。
複数行の文字列と他のいくつかの機能をサポートするjavascriptの最小限のスーパーセットを作成したいと考えています。 coffeescriptの最初のコンパイラを書く前に、この小さな言語を少し前に始めました。今年の夏に仕上げる予定です。
プリコンパイラがオプションではない場合、複数行のデータをhtmlのスクリプトタグに保存するスクリプトタグハックもありますが、評価されないようにカスタムタイプを指定します。その後、JavaScriptを使用して、スクリプトタグのコンテンツを抽出できます。
また、ソースコードの行の最後に\を挿入すると、改行が存在しないかのように無視されます。改行が必要な場合は、行を「\ n \」で終了する必要があります。
受け入れられた答えに加えて:
`this is a
single string`
「これはa\nsingle文字列です」と評価されます。
文字列補間を使用したいが改行しない場合は、通常の文字列のようにバックスラッシュを追加するだけです:
`this is a \
single string`
=> 'これは単一の文字列です'。
ただし、手動の空白は必要です。
`this is a\
single string`
=> 'これは単一の文字列です'