YAML中将字符串跨多行换行

在 YAML 中,有 不同的方法来编写多行字符串。

TL;DR

  • 大多数情况下使用 >:内部换行符会被删除,尽管你可以在末尾得到一个:
key: >
  Your long
  string here.
  • 如果你想保留那些换行符(例如,嵌入的带有段落的 markdown),使用 |
key: |
  ### Heading

  * Bullet
  * Points
  • 如果你不想在末尾添加换行符,使用 >-|-

  • 如果你需要在单词中间拆分行或希望将换行符作为 \n 字面量输入,使用 ""

key: "Antidisestab\
lishmentarianism.\n\nGet on it."

Block scalar styles (>, |)

这些允许字符如 \" 无需转义,并在字符串末尾添加一个新行 (\n)。

  • Folded style 去除字符串内的单个换行符(但在末尾添加一个),并将双换行符转换为单个换行符:
Key: >
    this is my very very very
    long string

this is my very very very long string\n

额外的前导空格会被保留并导致额外的换行符。请参见下面的注释。

  • Literal style 将字符串内的每个换行符转换为字面换行符,并在末尾添加一个:
Key: |
    this is my very very very
    long string

this is my very very very\nlong string\n

Block styles with block chomping indicator (>-, |-, >+, |+)

你可以通过添加一个 block chomping indicator 字符来控制字符串中最终换行符的处理,以及任何尾随空白行 (\n\n):

  • >, |: “clip”: 保留换行符,删除尾随空白行。
  • >-, |-: “strip”: 删除换行符,删除尾随空白行。
  • `>+', ‘|+’: “keep”: 保留换行符,保留尾随空白行。

“Flow” scalar styles (, ", ')

这些具有有限的转义,并构造一个不包含换行符的单行字符串。它们可以与键在同一行开始,或者首先带有额外的换行符,这些换行符会被删除。加倍的换行符字符会变成一个换行符。

  • plain style(无转义,无 #: 组合,第一个字符不能是 ", ' 或许多其他标点符号):
Key: this is my very very very long string

建议:避免使用。可能看起来很方便,但你可能会因为意外使用禁止的标点符号而触发语法错误。

  • double-quoted style\"\'' 必须由 ` 转义,换行符可以用字面 \n 序列插入,行可以在尾随 \ 时拼接在一起):
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."

"this is my very very \"very\" loooong string.\n\nLove, YAML."

建议:在非常特定的情况下使用。这是唯一一种可以在不添加空格的情况下跨行拆分非常长的令牌(如 URL)的方法。并且可能在行中添加换行符是有用的。

  • single-quoted style(字面 ' 必须加倍,没有特殊字符,可能用于表示以双引号开头的字符串):
Key: 'this is my very very "very"
long string, isn't it.'

"this is my very very \"very\" long string, isn't it."

建议:避免使用。几乎没有好处,主要是不便。

Block styles with indentation indicators

如果上述内容还不够,你可以在块折叠指示符后添加一个“块缩进指示符”(如果你有的话):

- >8
      My long string
      starts over here
- |+1
This one
starts here
注意:Folded style 中的前导空格 (>)

如果你在 Folded style 的非首行开头插入额外空格,它们将被保留,并且会有一个额外的换行符。这不会发生在流样式中。第 6.5 节说:

折叠不适用于包含前导空白的文本行周围的换行符。请注意,更缩进的行可能仅由这样的前导空白组成。

-
  >
    my long
      string

    many spaces above
-
  my long
    string

  many spaces above

["my long\n string\n\nmany spaces above\n","my long string\nmany spaces above"]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李星星BruceL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值