Esistono 5 6 NOVE (o 63 *, a seconda del conteggio) diversi modi per scrivere stringhe su più righe in YAML.
TL; DR
Di solito, vuoi >
:
key: >
Your long
string here.
Se si desidera conservare le interruzioni di riga come \n
nella stringa (ad esempio, markdown incorporato con paragrafi), utilizzare |
.
key: |
### Heading
* Bullet
* Points
Utilizzare >-
o |-
invece se non si desidera aggiungere un'interruzione di riga alla fine.
Se devi dividere le linee nel mezzo di parole o digitare letteralmente le interruzioni di riga come \n
, usa invece le virgolette doppie:
key: "Antidisestab\
lishmentarianism.\n\nGet on it."
YAML è pazzo.
Blocca stili scalari ( >
,|
)
Questi consentono caratteri come \
e "
senza escape e aggiungono una nuova riga ( \n
) alla fine della stringa.
>
Lo stile piegato rimuove le singole nuove righe all'interno della stringa (ma ne aggiunge una alla fine e converte le doppie nuove righe in singoli):
Key: >
this is my very very very
long string
→ this is my very very very long string\n
|
Lo stile letterale trasforma ogni nuova riga all'interno della stringa in una nuova riga letterale e ne aggiunge una alla fine:
Key: |
this is my very very very
long string
→ this is my very very very\nlong string\n
Ecco la definizione ufficiale dalla YAML Spec 1.2
Il contenuto scalare può essere scritto in notazione a blocchi, usando uno stile letterale (indicato da “|”) in cui tutte le interruzioni di riga sono significative. In alternativa, possono essere scritti con lo stile piegato (indicato da “>”) in cui ogni interruzione di riga viene piegata in uno spazio a meno che non termini una riga vuota o più rientrata.
Stili di blocco con blocco chomping indicatore ( >-
, |-
, >+
,|+
)
È possibile controllare la gestione della nuova riga finale nella stringa e di eventuali righe vuote finali ( \n\n
) aggiungendo un carattere indicatore di blocco chomping :
>
, |
: "clip": mantiene l'avanzamento riga, rimuove le righe vuote finali.
>-
, |-
: "strip": rimuove l'alimentazione di riga, rimuove le righe vuote finali.
>+
, |+
: "keep": mantieni l'alimentazione della riga, continua a trascinare le righe vuote.
"Flow" stili scalari (
, "
, '
)
Questi hanno un escape limitato e costruiscono una stringa a riga singola senza caratteri di nuova riga. Possono iniziare sulla stessa riga del tasto o prima con nuove righe aggiuntive.
stile semplice (senza escape, no#
o:
combinazioni, limiti per il primo carattere):
Key: this is my very very very
long string
stile tra virgolette (\
e"
deve essere evitato da\
, le nuove righe possono essere inserite con una\n
sequenzaletterale, le righe possono essere concatenate senza spazi con trascinamento\
):
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
→ "this is my very very \"very\" loooong string.\n\nLove, YAML."
stile a virgoletta singola (il valore letterale'
deve essere raddoppiato, nessun carattere speciale, possibilmente utile per esprimere stringhe che iniziano con virgolette doppie):
Key: 'this is my very very "very"
long string, isn''t it.'
→ "this is my very very \"very\" long string, isn't it."
Sommario
In questa tabella, _
significa space character
. \n
significa "carattere newline" ( \n
in JavaScript), ad eccezione della riga "newline in-line", dove significa letteralmente una barra rovesciata e una n).
> | " ' >- >+ |- |+
-------------------------|------|-----|-----|-----|------|------|------|------
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 |
Esempi
Nota gli spazi finali sulla riga prima di "spazi".
- >
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."
]
Blocca gli stili con gli indicatori di rientro
Nel caso in cui quanto sopra non fosse abbastanza per te, puoi aggiungere un " indicatore di indentazione del blocco " (dopo l'indicatore di chomping del blocco, se ne hai uno):
- >8
My long string
starts over here
- |+1
This one
starts here
appendice
Se inserisci spazi extra all'inizio delle prime righe in stile Piegato, verranno mantenuti con una nuova riga bonus. Questo non accade con gli stili di flusso:
- >
my long
string
- my long
string
→ ["my long\n string\n", "my long string"]
Non posso nemmeno.
*
2 stili di blocco, ciascuno con 2 possibili indicatori di blocco dei blocchi (o nessuno) e con 9 possibili indicatori di rientro (o nessuno), 1 stile normale e 2 stili tra virgolette: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63
Alcune di queste informazioni sono state anche riassunte qui .