JavaScriptの複数行のコードで文字列を分割するにはどうすればよいですか?


198

JavaScriptには、コード行を分割して、新しい行にあっても連続として読み取られる文字はありますか?

何かのようなもの....

1.アラート( "ファイルを選択してください   
2. \削除します ");

回答:


272

あなたの例では、文字列を2つの部分に分割できます。

alert ( "Please Select file"
 + " to delete");

または、あなたの場合のように文字列の場合、@ Gumboが提案するようにバックスラッシュを使用できます。

alert ( "Please Select file\
 to delete");

このバックスラッシュアプ​​ローチは必ずしも好ましいとは限らず、おそらく普遍的にサポートされていないことに注意してください(これに関するハードデータを見つけるのに苦労しました)。ECMA 5.1仕様には含まれていません

他のコード(引用符で囲まれていない)を操作する場合、改行は無視され、完全に許容されます。例えば:

if(SuperLongConditionWhyIsThisSoLong
  && SuperLongConditionOnAnotherLine
  && SuperLongConditionOnThirdLineSheesh)
{
    // launch_missiles();
}

ifステートメントを分割できますか?
TTT

17
ただし、セミコロンの自動挿入メカニズムには注意してください。関数の最後で1つの行に戻り、次の行に「文字列」を挿入すると、結果として未定義になります。
いくつかの

これは標準に準拠していますか?すべての対応ブラウザでサポートされますか?やる古いブラウザでは、今日、それをサポートしていますか?これらの重要な質問はいずれもカバーされていませんでした、-1。
ulidtko 2013

3
ええと...まだ尋ねられていないたくさんの新しい質問をするつもりなら、私たちにそれらに答える機会を与えなければなりません。私は答えを満足できない推測で更新しました。
マイケルハーレン2013

2
バックスラッシュに注意してください。空白がなくなるまですべての空白を食べます。したがって、例では「警告」が表示されます。削除するファイルを選択してください。fileとtoの間の空白が必要な場合は、バックスラッシュの前に置く必要があります。
jgomo3 2015

41

行末にバックスラッシュを置きます。

alert("Please Select file\
 to delete");

編集     これは、行末文字がまったく許可されていないため、ECMAScript文字列の一部ではないことに注意する必要があります。

' LineTerminator '文字は、バックスラッシュが前に付いていても、文字列リテラルに含めることはできません\。行終了文字を文字列リテラルの文字列値の一部にする正しい方法は、\nまたはなどのエスケープシーケンスを使用すること\u000Aです。

そのため、文字列の連結を使用することをお勧めします。


更新2015-01-05     ECMAScript5の文字列リテラルは、前述の構文を許可します。

空の文字シーケンスを生成するLineContinuationの一部として以外は、行終端文字を文字列リテラルに含めることはできません。行終了文字を文字列リテラルの文字列値の一部にする正しい方法は、\nまたはなどのエスケープシーケンスを使用すること\u000Aです。


1
ECMAScript5は次のことを許可します。 " LineContinuationの一部として空の文字シーケンスを生成する場合\n\u000Aを除いて、行終了文字を文字列リテラルに含めることはできません。行終了文字を文字列リテラルの文字列値の一部にする正しい方法は次のとおりです。or などのエスケープシーケンスを使用するには "
Oriol

1
@Oriolメモをありがとう、それに応じて回答を更新しました!
ガンボ2016年

1
ファイルがWindowsで作成された場合、これは問題がありますか?つまり\r\n\n?の代わりにで終わる行
Adam Plocher 2017

31

ECMAScript 6はテンプレート文字列を導入します

テンプレート文字列は、埋め込み式を許可する文字列リテラルです。複数行の文字列と文字列補間機能を使用できます。

例えば、

alert(`Please Select file   
to delete`);

警告します

Please Select file   
to delete

1
うわ〜すごい。キーボードでこれらの ``を取得するには、Shift + ´を2回押します。ドイツ語のキーボードでは、そのキーはバックスペースキーの近くにあります。
Nadu

@Naduそれはキーボードに依存します。鉱山には`鍵があります。修飾子なので、直接書かれることはありません。おそらくそれを2回押すべきだと思ったのですが、それでそのうちの2つが書き込まれます。スペースバーを押して1つだけ書き込みます。
Oriol

派手なハックなしで複数行の文字列を許可するのに非常に長い時間がかかったことは信じられない...質問です:改行文字として何が使用されますか-ドキュメントのハードコードされた文字または改行文字?
StanE

1
* .jsファイルを拡大したい場合は ``に問題があります。
Raskolnikov 2017年

1
2018年
#feat


4

興味深いことに注意してください。試した:

alert("Some \
    string \
    wrapped \
    across \
    mutliples lines.")

そして、これはうまくいきました。ただし、偶然に、最後のバックスラッシュの後にスペース文字がありました(他のすべてのバックスラッシュは行末にありました)。そして、これはjavascriptでエラーを引き起こしました!ただし、このスペースを削除するとエラーが修正されました。

これは、Cordovaを使用するADT for Androidにあります。


1
私の一日のほとんどがこの問題との戦いに費やしました。また、あなたのおかげで、スラッシュの後のスペース文字が原因で、イオンアプリがコンパイルされないことも発見しました。ありがとうございました!
rekordboy 2016

1
文字列の一部としてコードにインデントが含まれているため、例は次のようになると誰もがコメントしたとは信じられないSome\n<4 spaces>string\n<4 spaces>wrapped\n<4 spaces>across\n<4 spaces>multiple lines.
JHH


0

長い文字列定数を論理的なチャンクに分割し、それらを配列に割り当てることができます。次にjoin、区切り文字として空の文字列を使用してを実行します。

var stringArray = [
  '1. This is first part....',
  '2. This is second part.....',
  '3. Finishing here.'
];

var bigLongString = stringArray.join('');
console.log(bigLongString);

出力は次のようになります。

  1. これは最初の部分です... 2。これは第2部です。ここで仕上げます。

この方法では、わずかにパフォーマンスが低下しますが、コードの可読性と保守性は向上します。



-3

上記の提案をいくつか試しましたが、Chromeコードインスペクターで不正な文字の警告が表示されました。以下は私にとってはうまくいきました(Chromeでのみテストされました!)

alert('stuff on line 1\\nstuff on line 2);

のように出てきます...

stuff on line 1
stuff on line 2

二重のバックスラッシュに注意してください!! ...これは重要なようです!


-5

コードを手動で中断する必要はありません。中断したい場所に\ nを追加するだけです。

alert ("Please Select file \n to delete");

これは次のようなアラートを表示します

Please select file 
to delete.

反対投票者、反対投票の理由を教えてください。この解決策は私にとって常に機能します。
Narendra

27
誰が反対票を投じたのか、またその理由はわかりません。しかし、推測に過ぎません。opは、出力に改行を挿入する方法ではなく、テキストリテラルを複数行のコードに拡張する方法を知りたいと考えていました。
ザレフェス2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.