有没有办法表示在YAML文档中的多行上没有任何空格的长字符串?

Jak*_*ake 24 string yaml

说我有以下字符串:

"abcdefghijklmnopqrstuvwxyz"
Run Code Online (Sandbox Code Playgroud)

我认为我的YAML文件中的一行太长了,有没有办法将它分成几行?

>-
    abcdefghi
    jklmnopqr
    stuvwxyz
Run Code Online (Sandbox Code Playgroud)

会导致"abcdefghi jklmnopqr stuvwxyz"哪个接近,但它不应该有任何空格.

Jes*_*der 25

使用双引号,并转义换行符:

"abcdefghi\
jklmnopqr\
stuvwxyz"
Run Code Online (Sandbox Code Playgroud)

  • 我在傀儡"Hiera"中使用这个用于YAML并且单引号不起作用,因为他们不尊重\作为RUBY YAML中的逃脱角色至少.尚未使用其他YAML解析器进行测试. (4认同)
  • 单引号不应该那样.从规范:`它只能打破一个长的单引号行,其中空格字符被非空格包围 (2认同)

lar*_*sks 7

杰西的答案有一些微妙之处。

YAML(像许多编程语言一样)对单引号和双引号的处理方式不同。考虑以下文档:

regexp: "\d{4}"
Run Code Online (Sandbox Code Playgroud)

这将无法解析,并显示以下错误:

在第1行第9列的引用标量时发现未知的转义字符

比较一下:

regexp: '\d{4}'
Run Code Online (Sandbox Code Playgroud)

哪个将正确解析。为了在双引号字符串中使用反斜杠字符,您需要对其进行转义,如下所示:

regexp: "\\d{4}"
Run Code Online (Sandbox Code Playgroud)

我还想强调一下Steve关于单引号字符串的评论。考虑以下文档:

s1: "this\
  is\
  a\
  test"

s2: 'this\
  is\
  a\
  test'
Run Code Online (Sandbox Code Playgroud)

解析后,您将发现它等效于:

s1: thisisatest
s2: "this\\ is\\ a\\ test"
Run Code Online (Sandbox Code Playgroud)

这是以下事实的直接结果:YAML将单引号字符串视为文字,而双引号字符串则接受转义字符扩展。