簡體   English   中英

如何在 JavaScript 中的多行代碼中拆分字符串?

[英]How do I break a string across more than one line of code in JavaScript?

JavaScript 中是否有一個字符可以分解一行代碼,以便盡管在新行上仍被讀取為連續的?

就像是....

1. alert ( "Please Select file   
2. \ to delete" );

在您的示例中,您可以將字符串分成兩部分:

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

或者,當它是一個字符串時,就像你的情況一樣,你可以使用@Gumbo 建議的反斜杠

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

請注意,這種反斜杠方法不一定是首選,並且可能不會得到普遍支持(我很難找到有關此的硬數據)。 不在ECMA 5.1 規范中

使用其他代碼(不在引號中)時,會忽略換行符,並且完全可以接受。 例如:

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

將反斜杠放在行尾:

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

編輯我必須注意,這不是ECMAScript 字符串的一部分,因為根本不允許行終止字符

LineTerminator ”字符不能出現在字符串文字中,即使前面有反斜杠\\ 使行終止符成為字符串文字的字符串值一部分的正確方法是使用轉義序列,例如\\n\

所以使用字符串連接是更好的選擇。


更新 2015-01-05 ECMAScript5 中的字符串文字允許提到的語法:

行終止符不能出現在字符串文字中,除非作為LineContinuation 的一部分以產生空字符序列。 使行終止符成為字符串文字的 String 值一部分的正確方法是使用轉義序列,例如\\n\

ECMAScript 6 引入了模板字符串

模板字符串是允許嵌入表達式的字符串文字。 您可以將多行字符串和字符串插值功能與它們一起使用。

例如:

alert(`Please Select file   
to delete`);

會提醒:

Please Select file   
to delete

把繩子分成兩部分

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

有趣的是要注意。 嘗試:

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

這奏效了。 然而,偶然!,最后一個反斜杠后面有一個空格字符(所有其他反斜杠都在行尾)。 這導致了 javascript 中的錯誤! 不過,刪除此空間修復了錯誤。

這是使用 Cordova 的 ADT for Android。

你可以使用

1:  alert("Please select file" +
2:        " to delete");

那應該工作

反斜杠運算符不可靠。 嘗試在瀏覽器控制台中粘貼此函數:

function printString (){
  const s = "someLongLineOfText\
  ThatShouldNotBeBroken";
  console.log(s);
}

然后運行它。 由於函數中的常規(和正確)縮進,將包含兩個額外的空格,導致someLongLineOfText ThatShouldNotBeBroken

在這種情況下,即使使用反引號也無濟於事。 始終使用連接“+”運算符來防止此類問題。

您可以將長字符串常量分解為邏輯塊並將它們分配到數組中。 然后做一個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。 這是第二部分.....3。 到此結束。

這種方式對性能有輕微影響,但您會提高代碼可讀性和可維護性。

對於 VSCode 用戶來說一個很好的解決方案,如果一個字符串分解成多行會導致問題(當我不得不測試一個很長的 JWT 令牌時,我遇到了這個問題,但不知何故使用模板文字並沒有解決問題。)

我嘗試了許多上述建議,但在 Chrome 代碼檢查器中收到了非法字符警告。 以下對我有用(盡管僅在 Chrome 中測試過!)

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

出來就像...

stuff on line 1
stuff on line 2

注意雙反斜杠!!...這似乎很重要!

無需任何手動中斷代碼。 只需在要中斷的地方添加 \\n 即可。

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

這將顯示警報

Please select file 
to delete.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM