如何将一个字符串分成多行?
在YAML中,我有一个非常长的字符串。我想把它保持在我的编辑器的80列(或左右)视图中,所以我想把这个字符串断开。这方面的语法是什么?
换句话说,我有这个。
Key: 'this is my very very very very very very long string'
而我想拥有这个(或类似的东西)。
Key: 'this is my very very very ' +
'long string'
我想像上面那样使用引号,所以我不需要在字符串中转义。
1373
3
在YAML中,有5*6*N(或63*,取决于你如何计算)的不同方式来写多行字符串。
TL;DR
*通常情况下,你想要
>
。如果你想在字符串中以
n'的形式保留换行符(例如,带有段落的嵌入式markdown),使用
|`。如果你不希望在结尾处添加换行符,请使用
>-
或|-
代替。如果你需要在词的中间分割行,或按字面意思把换行符打成`n',请用双引号代替。
*YAML是疯狂的。
块状标量样式(
>
,|
)这些允许诸如
"
和"
之类的字符,而不需要转义,并在字符串的末尾添加一个新行(n
)。>
折叠样式 删除字符串中的单换行(但在结尾处添加一个,并将双换行转换为单行)。→
这是我非常非常非常长的字符串
。|
文字风格将字符串中的每一个换行都变成文字换行,并在末尾添加一个。→
这是我非常非常非常长的字符串
。以下是[YAML Spec 1.2]的官方定义(http://www.yaml.org/spec/1.2/spec.html#id2760844)
带有块状咬合指示符的块状样式(
>-
,|-
,>+
,|+
)你可以通过添加一个block chomping indicator字符来控制对字符串中最后一个新行以及任何尾部空行(
n
)的处理。>
,|
: "clip": 保留换行,删除后面的空行。>-
,|-
: "strip": 移除换行,移除后面的空行。>+
,|+
: "keep": 保留换行,保留后面的空行。"Flow" 标量样式 (`
,
",
'`)这些样式具有有限的转义功能,并构建一个没有新行字符的单行字符串。它们可以与按键在同一行开始,也可以先加换行。
普通风格 (没有转义,没有
#
或:
组合,对第一个字符有限制)。双引号风格 (
\
和"
必须用`转义,换行符可以用字面的
n`序列插入,行与行之间可以用尾部的```连接,没有空格)。→
"这是我非常非常"非常"长的字符串。&n\nLove, YAML."
单引号样式(字面意思
'
必须是双引号,没有特殊字符,可能对表达以双引号开始的字符串有用)。→
"这是我的非常非常"非常"长的字符串,不是吗"
。摘要
在这个表格中,
_'表示 "空间字符"。
n表示"换行符"(JavaScript中的
n`), 除了"行内换行符"行,它的意思是一个反斜杠和一个n)。示例
*注意在"空格."前一行的尾部空格。
带有缩进指示器的块状样式
如果上述内容对你来说还不够,你可以添加一个"块缩进指标"(在你的块缩进指标之后,如果你有一个的话)。
补遗
如果你在Folded风格的非第一行的开头插入额外的空格,它们将被保留,并有一个额外的换行。这不会发生在流动风格中。
→
["my long\n string\n", "my long string"]
我甚至不能'。
``2个块状样式,每个都有2个可能的块状咬合指标(或没有),并有9个可能的缩进指标(或没有),1个普通样式和2个引号样式:2×(2+1)×(9+1)+1+2=63*。
其中一些信息也被总结出来这里。
使用yaml的折叠样式,每一个换行符都被一个空格所取代。每一行的缩进将被忽略。在结尾处将插入一个换行符。
http://symfony.com/doc/current/components/yaml/yaml_format.html
你可以使用"块咬合指标"来消除尾部的换行,如下所示。
还有其他控制工具(例如控制缩进)。
见https://yaml-multiline.info/
要保留换行,使用
|
,例如。被翻译成"这是一个非常长的句子*/n*,在YAML中跨越了几行/n**,但它将被渲染成一个保留了换行符的字符串*/n"。