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

IT技术 javascript line-breaks
2021-01-30 09:55:44

JavaScript 中是否有一个字符可以分解一行代码,以便尽管在新行上仍被读取为连续的?

就像是....

1. alert ( "请选择文件   
2.\删除");
6个回答

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

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

或者,当它是一个字符串时,如您的情况,您可以使用@Gumbo 建议反斜杠

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

请注意,这种反斜杠方法不一定是首选,并且可能不会得到普遍支持(我很难找到有关此的硬数据)。这是不是ECMA 5.1规范

使用其他代码(不在引号中)时,会忽略换行符,并且完全可以接受。例如:

if(SuperLongConditionWhyIsThisSoLong
  && SuperLongConditionOnAnotherLine
  && SuperLongConditionOnThirdLineSheesh)
{
    // launch_missiles();
}
小心反斜杠。它会吃掉所有的空白,直到找到一个非空白为止。所以这个例子会“警告”:请选择要删除的文件。如果你想要 file 和 to 之间的空格,你应该把它放在反斜杠之前。
2021-03-14 09:55:44
你能分解一个 if 语句吗?
2021-03-17 09:55:44
这符合标准吗?所有兼容的浏览器都支持它吗?不要旧的浏览器都支持它?这些重要问题都没有涵盖,-1。
2021-03-30 09:55:44
但要注意自动分号插入机制:尝试在函数末尾的一行中返回一个“字符串”,并在下一行中放置一个“字符串”,结果是未定义。
2021-04-07 09:55:44
嗯……如果你要问一堆还没有问过的新问题,你必须给我们一个回答它们的机会。我用一个不令人满意的猜想更新了我的答案。
2021-04-09 09:55:44

将反斜杠放在行尾:

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

编辑    我必须注意,这不是ECMAScript 字符串的一部分,因为根本不允许行终止字符

LineTerminator ”字符不能出现在字符串文字中,即使前面有反斜杠\使行终止符成为字符串文字的字符串值的一部分的正确方法是使用转义序列,例如\nor \u000A

所以使用字符串连接是更好的选择。


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

行终止符不能出现在字符串文字中,除非作为LineContinuation 的一部分以产生空字符序列。使行终止符成为字符串文字的 String 值一部分的正确方法是使用转义序列,例如\n\u000A

@Oriol 感谢您的注意,相应地更新了答案!
2021-03-18 09:55:44
如果文件是在 Windows 中创建的,这是否有问题。换句话说,行以\r\n而不是\n?
2021-03-25 09:55:44
ECMAScript5允许它:“行终止符不能出现在字符串文字中,除非作为LineContinuation 的一部分以产生空字符序列。使行终止符成为字符串文字的 String 值的一部分的正确方法是使用转义序列,例如\n\u000A
2021-04-07 09:55:44

ECMAScript 6 引入了模板字符串

模板字符串是允许嵌入表达式的字符串文字。您可以将多行字符串和字符串插值功能与它们一起使用。

例如:

alert(`Please Select file   
to delete`);

会提醒:

Please Select file   
to delete
@Nadu 这取决于键盘。我的有`钥匙。因为它是一个修饰符,所以它不是直接写的。这可能就是您认为应该按两次的原因,但这会写出其中的两个。按空格键只写一个。
2021-03-15 09:55:44
考虑一下,根据 caniuse.com caniuse.com/#feat=template-literals,在 2018 年 3 月,全球使用的浏览器中只有 89% 支持模板字符串
2021-03-15 09:55:44
哇,真棒。要在键盘上显示这些 ` `,请按两次 SHIFT + ´。在德语键盘上,该键靠近退格键。
2021-03-23 09:55:44
令人难以置信的是,花了这么长时间才允许没有花哨的黑客攻击的多行字符串......问题是:什么将用作行分隔符 - 文件的硬编码字符或换行符字符?
2021-03-29 09:55:44
如果你想放大 *.js 文件,` ` 有问题。
2021-04-11 09:55:44

把绳子分成两部分 

alert ("Please select file " +
       "to delete");
但是不要忘记在第一个块的末尾或第二个块的开头有一个空格;)
2021-04-08 09:55:44

有趣的是要注意。尝试过:

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

这奏效了。然而,偶然地!在最后一个反斜杠后面有一个空格字符(所有其他反斜杠都在行尾)。这导致了 javascript 中的错误!不过,删除此空间修复了错误。

这是使用 Cordova 的 ADT for Android。

无法相信有人评论说这将包括代码中的任何缩进作为字符串的一部分,因此示例变为 Some\n<4 spaces>string\n<4 spaces>wrapped\n<4 spaces>across\n<4 spaces>multiple lines.
2021-03-12 09:55:44
我花了一天的大部分时间来解决这个问题,多亏了你,我还发现任何斜线后面的空格字符都会导致我的 ionic 应用程序无法编译。谢谢!
2021-04-07 09:55:44