【发布时间】:2011-09-10 05:40:02
【问题描述】:
假设我有以下字符串:
"abcdefghijklmnopqrstuvwxyz"
而且我认为我的 YAML 文件中的一行太长了,有什么方法可以将它分成几行吗?
>-
abcdefghi
jklmnopqr
stuvwxyz
将导致"abcdefghi jklmnopqr stuvwxyz" 很接近,但不应包含任何空格。
【问题讨论】:
假设我有以下字符串:
"abcdefghijklmnopqrstuvwxyz"
而且我认为我的 YAML 文件中的一行太长了,有什么方法可以将它分成几行吗?
>-
abcdefghi
jklmnopqr
stuvwxyz
将导致"abcdefghi jklmnopqr stuvwxyz" 很接近,但不应包含任何空格。
【问题讨论】:
使用双引号,并转义换行符:
"abcdefghi\
jklmnopqr\
stuvwxyz"
【讨论】:
it is only possible to break a long single-quoted line where a space character is surrounded by non-spaces.
Jesse 的回答会遗漏一些细微之处。
YAML(像许多编程语言一样)以不同的方式处理单引号和双引号。考虑这份文件:
regexp: "\d{4}"
这将无法解析,并出现如下错误:
在第 1 行第 9 列解析带引号的标量时发现未知转义字符
比较一下:
regexp: '\d{4}'
这将正确解析。为了在双引号字符串中使用反斜杠字符,您需要对它们进行转义,如:
regexp: "\\d{4}"
我还想强调一下 Steve 关于单引号字符串的评论。考虑这份文件:
s1: "this\
is\
a\
test"
s2: 'this\
is\
a\
test'
解析的时候你会发现它等价于:
s1: thisisatest
s2: "this\\ is\\ a\\ test"
这是 YAML 将单引号字符串视为文字的直接结果,而双引号字符串受转义字符扩展的影响。
【讨论】: