Es gibt 5 6 NEUN (oder 63 *, je nachdem, wie Sie zählen) verschiedene Möglichkeiten, mehrzeilige Zeichenfolgen in YAML zu schreiben.
TL; DR
Normalerweise möchten Sie >
:
key: >
Your long
string here.
Wenn Sie möchten, dass die Zeilenumbrüche wie \n
in der Zeichenfolge beibehalten werden (z. B. eingebetteter Markdown mit Absätzen), verwenden Sie |
.
key: |
### Heading
* Bullet
* Points
Verwenden Sie >-
oder |-
stattdessen, wenn am Ende kein Zeilenumbruch angehängt werden soll.
Wenn Sie Zeilen in der Mitte von Wörtern teilen oder Zeilenumbrüche buchstäblich als eingeben müssen \n
, verwenden Sie stattdessen doppelte Anführungszeichen:
key: "Antidisestab\
lishmentarianism.\n\nGet on it."
YAML ist verrückt.
Block skalare Stile ( >
, |
)
Diese erlauben Zeichen wie \
und "
ohne Escapezeichen und fügen \n
am Ende Ihrer Zeichenfolge eine neue Zeile ( ) hinzu.
>
Der gefaltete Stil entfernt einzelne Zeilenumbrüche innerhalb der Zeichenfolge (fügt jedoch am Ende eine hinzu und konvertiert doppelte Zeilenumbrüche in Singles):
Key: >
this is my very very very
long string
→ this is my very very very long string\n
|
Der wörtliche Stil verwandelt jede neue Zeile in der Zeichenfolge in eine wörtliche neue Zeile und fügt am Ende eine hinzu:
Key: |
this is my very very very
long string
→ this is my very very very\nlong string\n
Hier ist die offizielle Definition aus der YAML-Spezifikation 1.2
Skalare Inhalte können in Blocknotation unter Verwendung eines Literalstils (angezeigt durch "|") geschrieben werden, bei dem alle Zeilenumbrüche von Bedeutung sind. Alternativ können sie mit dem gefalteten Stil (mit „>“ gekennzeichnet) geschrieben werden, wobei jeder Zeilenumbruch zu einem Leerzeichen gefaltet wird, es sei denn, er endet mit einer leeren oder einer stärker eingerückten Zeile.
Block Stile mit Block scharrt Indikator ( >-
, |-
, >+
, |+
)
Sie können die Behandlung der letzten neuen Zeile in der Zeichenfolge und aller nachfolgenden Leerzeilen ( \n\n
) steuern, indem Sie ein Block-Chomping-Indikatorzeichen hinzufügen :
>
, |
: "clip": Zeilenvorschub beibehalten, nachgestellte Leerzeilen entfernen.
>-
, |-
: "Streifen": Entfernen Sie den Zeilenvorschub, entfernen Sie die nachgestellten Leerzeilen.
>+
, |+
: "behalten": Zeilenvorschub beibehalten, Leerzeilen nachziehen.
"Flow" Skalar Arten (
, "
, '
)
Diese haben ein begrenztes Escapezeichen und erstellen eine einzeilige Zeichenfolge ohne neue Zeilenzeichen. Sie können in derselben Zeile wie der Schlüssel oder zuerst mit zusätzlichen Zeilenumbrüchen beginnen.
einfacher Stil (kein Entkommen, Nein#
oder:
Kombinationen, Begrenzung des ersten Zeichens):
Key: this is my very very very
long string
Stil in doppelten Anführungszeichen (\
und"
muss\
maskiert werden, Zeilenumbrüche können mit einer Literalfolge eingefügt\n
werden, Zeilen können ohne Leerzeichen mit nachgestelltenZeichenverkettet werden\
):
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
→ "this is my very very \"very\" loooong string.\n\nLove, YAML."
Stil in einfachen Anführungszeichen (Literal'
muss verdoppelt werden, keine Sonderzeichen, möglicherweise nützlich, um Zeichenfolgen auszudrücken, die mit doppelten Anführungszeichen beginnen):
Key: 'this is my very very "very"
long string, isn''t it.'
→ "this is my very very \"very\" long string, isn't it."
Zusammenfassung
In dieser Tabelle _
bedeutet space character
. \n
bedeutet "Zeilenumbruch" ( \n
in JavaScript), mit Ausnahme der Zeile "Zeilenumbruch", in der es wörtlich einen Backslash und ein n bedeutet.
> | " ' >- >+ |- |+
-------------------------|------|-----|-----|-----|------|------|------|------
Trailing spaces | Kept | Kept | | | | Kept | Kept | Kept | Kept
Single newline => | _ | \n | _ | _ | _ | _ | _ | \n | \n
Double newline => | \n | \n\n | \n | \n | \n | \n | \n | \n\n | \n\n
Final newline => | \n | \n | | | | | \n | | \n
Final dbl nl's => | | | | | | | Kept | | Kept
In-line newlines | No | No | No | \n | No | No | No | No | No
Spaceless newlines| No | No | No | \ | No | No | No | No | No
Single quote | ' | ' | ' | ' | '' | ' | ' | ' | '
Double quote | " | " | " | \" | " | " | " | " | "
Backslash | \ | \ | \ | \\ | \ | \ | \ | \ | \
" #", ": " | Ok | Ok | No | Ok | Ok | Ok | Ok | Ok | Ok
Can start on same | No | No | Yes | Yes | Yes | No | No | No | No
line as key |
Beispiele
Beachten Sie die nachgestellten Leerzeichen in der Zeile vor "Leerzeichen".
- >
very "long"
'string' with
paragraph gap, \n and
spaces.
- |
very "long"
'string' with
paragraph gap, \n and
spaces.
- very "long"
'string' with
paragraph gap, \n and
spaces.
- "very \"long\"
'string' with
paragraph gap, \n and
s\
p\
a\
c\
e\
s."
- 'very "long"
''string'' with
paragraph gap, \n and
spaces.'
- >-
very "long"
'string' with
paragraph gap, \n and
spaces.
[
"very \"long\" 'string' with\nparagraph gap, \\n and spaces.\n",
"very \"long\"\n'string' with\n\nparagraph gap, \\n and \nspaces.\n",
"very \"long\" 'string' with\nparagraph gap, \\n and spaces.",
"very \"long\" 'string' with\nparagraph gap, \n and spaces.",
"very \"long\" 'string' with\nparagraph gap, \\n and spaces.",
"very \"long\" 'string' with\nparagraph gap, \\n and spaces."
]
Blockstile mit Einrückungsindikatoren
Nur für den Fall, dass Ihnen das oben Genannte nicht ausreicht, können Sie einen " Blockeinrückungsindikator " hinzufügen (nach Ihrem Blockzusammensetzungsindikator, falls vorhanden):
- >8
My long string
starts over here
- |+1
This one
starts here
Nachtrag
Wenn Sie am Anfang von nicht den ersten Zeilen im gefalteten Stil zusätzliche Leerzeichen einfügen, werden diese mit einem Bonus-Zeilenumbruch beibehalten. Dies ist bei Flow-Stilen nicht der Fall:
- >
my long
string
- my long
string
→ ["my long\n string\n", "my long string"]
Ich kann nicht einmal.
*
2 Blockstile mit jeweils 2 möglichen Block-Chomping-Indikatoren (oder keine) und mit 9 möglichen Einrückungsindikatoren (oder keine), 1 einfachen Stil und 2 zitierten Stilen: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63
Einige dieser Informationen auch zusammengefasst hier .