Hay 5 6 NUEVE (o 63 *, dependiendo de cómo cuente) diferentes formas de escribir cadenas de varias líneas en YAML.
TL; DR
Por lo general, quieres >
:
key: >
Your long
string here.
Si desea que los saltos de línea se conserven como \n
en la cadena (por ejemplo, marcado incrustado con párrafos), use |
.
key: |
### Heading
* Bullet
* Points
Use >-
o |-
en su lugar si no desea que se agregue un salto de línea al final.
Si necesita dividir líneas en el medio de las palabras o literalmente escribir saltos de línea como \n
, use comillas dobles en su lugar:
key: "Antidisestab\
lishmentarianism.\n\nGet on it."
YAML está loco.
Bloquear estilos escalares ( >
, |
)
Estos permiten caracteres como \
y "
sin escapar, y agregan una nueva línea ( \n
) al final de su cadena.
>
El estilo plegado elimina las nuevas líneas individuales dentro de la cadena (pero agrega una al final y convierte las nuevas líneas dobles en simples):
Key: >
this is my very very very
long string
→ this is my very very very long string\n
|
El estilo literal convierte cada nueva línea dentro de la cadena en una nueva línea literal y agrega una al final:
Key: |
this is my very very very
long string
→ this is my very very very\nlong string\n
Aquí está la definición oficial de la especificación YAML 1.2
El contenido escalar se puede escribir en notación de bloque, utilizando un estilo literal (indicado por "|") donde todos los saltos de línea son significativos. Alternativamente, se pueden escribir con el estilo plegado (denotado por ">") donde cada salto de línea se pliega en un espacio a menos que termine una línea vacía o más sangría.
Estilos de molde con el indicador masticando bloque ( >-
, |-
, >+
, |+
)
Puede controlar el manejo de la nueva línea final en la cadena, y cualquier línea en blanco final ( \n\n
) agregando un carácter indicador de bloqueo de bloques :
>
, |
: "clip": mantenga el avance de línea, elimine las líneas en blanco al final.
>-
, |-
: "strip": elimina el avance de línea, elimina las líneas en blanco finales.
>+
, |+
: "keep": mantiene el avance de línea, sigue las líneas en blanco.
"Flujo" estilos escalares (
, "
, '
)
Estos tienen escapes limitados y construyen una cadena de una sola línea sin nuevos caracteres de línea. Pueden comenzar en la misma línea que la tecla, o con nuevas líneas adicionales primero.
estilo simple (sin escape, sincombinaciones#
osin:
límites, en el primer carácter):
Key: this is my very very very
long string
estilo entre comillas dobles (\
y"
debe\
evitarse, las líneas nuevas se pueden insertar con una\n
secuencialiteral, las líneas se pueden concatenar sin espacios con el final\
):
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
→ "this is my very very \"very\" loooong string.\n\nLove, YAML."
Estilo entre comillas simples (el literal'
debe duplicarse, sin caracteres especiales, posiblemente útil para expresar cadenas que comiencen con comillas dobles):
Key: 'this is my very very "very"
long string, isn''t it.'
→ "this is my very very \"very\" long string, isn't it."
Resumen
En esta tabla, _
significa space character
. \n
significa "carácter de línea nueva" ( \n
en JavaScript), a excepción de la fila "líneas nuevas en línea", donde significa literalmente una barra diagonal inversa y 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 |
Ejemplos
Tenga en cuenta los espacios finales en la línea antes de "espacios".
- >
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."
]
Bloquear estilos con indicadores de sangría
En caso de que lo anterior no sea suficiente para usted, puede agregar un " indicador de sangría de bloque " (después de su indicador de bloqueo de bloque, si tiene uno):
- >8
My long string
starts over here
- |+1
This one
starts here
Apéndice
Si inserta espacios adicionales al comienzo de las primeras líneas en estilo Doblado, se mantendrán, con una nueva línea de bonificación. Esto no sucede con los estilos de flujo:
- >
my long
string
- my long
string
→ ["my long\n string\n", "my long string"]
Ni siquiera puedo.
*
2 estilos de bloque, cada uno con 2 posibles indicadores de bloqueo de bloque (o ninguno), y con 9 posibles indicadores de sangría (o ninguno), 1 estilo simple y 2 estilos entre comillas: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63
Parte de esta información también se ha resumido aquí .