Il y a 5 6 NEUF (ou 63*, selon la façon dont on compte) différentes façons d'écrire des chaînes de caractères multi-lignes dans YAML.
TL;DR
-
Utilisez >
la plupart du temps : les coupures de lignes intérieures sont supprimées, bien que vous en ayez une à la fin :
key: >
Your long
string here.
-
Utilisez |
si vous voulez que ces sauts de ligne soient préservés en tant que \n
(par exemple, markdown incorporé avec des paragraphes).
key: |
### Heading
* Bullet
* Points
-
Utilisez >-
ou |-
à la place si vous ne voulez pas qu'un saut de ligne soit ajouté à la fin.
-
Utilisez "..."
si vous avez besoin de séparer les lignes au milieu des mots ou si vous voulez littéralement taper des sauts de ligne comme \n
:
key: "Antidisestab\
lishmentarianism.\n\nGet on it."
-
YAML est fou.
Styles scalaires de blocs ( >
, |
)
Ceux-ci autorisent des caractères tels que \
et "
sans l'échapper, et ajoutez une nouvelle ligne ( \n
) à la fin de votre chaîne.
>
Style plié supprime les sauts de ligne simples dans la chaîne (mais en ajoute un à la fin, et convertit les sauts de ligne doubles en simples) :
Key: >
this is my very very very
long string
this is my very very very long string\n
L'espace de tête supplémentaire est conservé et entraîne des nouvelles lignes supplémentaires. Voir la note ci-dessous.
Conseil : Utilisez ceci. C'est généralement ce que vous voulez.
|
Style littéral transforme chaque nouvelle ligne dans la chaîne en une nouvelle ligne littérale, et en ajoute une à la fin :
Key: |
this is my very very very
long string
this is my very very very\nlong string\n
Voici la définition officielle de l YAML Spec 1.2
Le contenu scalaire peut être écrit en notation de bloc, en utilisant un style littéral (indiqué par "|") où tous les sauts de ligne sont significatifs. Il peut également être écrit avec le style plié (indiqué par ">") où chaque saut de ligne est replié sur un espace, sauf s'il termine une ligne vide ou plus indentée.
Conseil : Utilisez ceci pour insérer texte formaté (notamment Markdown) comme valeur.
Styles de bloc avec indicateur d'écrasement de bloc ( >-
, |-
, >+
, |+
)
Vous pouvez contrôler la gestion de la dernière nouvelle ligne de la chaîne, et de toute ligne vierge de fin de chaîne ( \n\n
) en ajoutant un indicateur d'écrasement de bloc caractère :
-
>
, |
: "clip" : conserve le saut de ligne, supprime les lignes vides de fin de ligne.
-
>-
, |-
: "strip" : supprimer le saut de ligne, supprimer les lignes vides de fin de ligne.
-
>+
, |+
: "keep" : garde le saut de ligne, garde les lignes vides de fin de ligne.
Styles scalaires "Flow" ( , "
, '
)
Ils ont un échappement limité, et construisent une chaîne de caractères d'une seule ligne sans caractères de nouvelle ligne. Ils peuvent commencer sur la même ligne que la clé, ou avec des retours à la ligne supplémentaires, qui sont supprimés. Les caractères de nouvelle ligne doublés deviennent une nouvelle ligne.
style sobre (pas d'échappement, pas de #
ou :
combinaisons, le premier caractère ne peut pas être "
, '
ou de nombreux autres caractères de ponctuation) :
Key: this is my very very very
long string
Conseils : À éviter. Cela peut sembler pratique, mais vous risquez de vous tirer une balle dans le pied en utilisant accidentellement une ponctuation interdite et en déclenchant une erreur de syntaxe.
style guillemets ( \
et "
doit être échappé par \
les nouvelles lignes peuvent être insérées à l'aide d'un caractère littéral. \n
les lignes peuvent être concaténées sans espaces avec des lignes de queue \
) :
Key: "this is my very very \"very\" loooo\
ng string.\n\nLove, YAML."
"this is my very very \"very\" loooong string.\n\nLove, YAML."
Conseils : A utiliser dans des situations très spécifiques. C'est le seul moyen de séparer un très long jeton (comme une URL) sur plusieurs lignes sans ajouter d'espaces. Et peut-être que l'ajout de nouvelles lignes à mi-ligne peut être utile.
style guillemet simple (littéral '
doit être doublé, pas de caractères spéciaux, éventuellement utile pour exprimer des chaînes de caractères commençant par des guillemets doubles) :
Key: 'this is my very very "very"
long string, isn''t it.'
"this is my very very \"very\" long string, isn't it."
Conseil : À éviter. Très peu d'avantages, surtout des désagréments.
Styles de blocs avec indicateurs d'indentation
Au cas où ce qui précède ne vous suffirait pas, vous pouvez ajouter un " indicateur d'indentation du bloc " (après votre indicateur de destruction de bloc, si vous en avez un) :
- >8
My long string
starts over here
- |+1
This one
starts here
Note : Les espaces en tête dans le style plié ( >
)
Si vous insérez des espaces supplémentaires au début des lignes qui ne sont pas les premières en style plié, ils seront conservés, avec une nouvelle ligne supplémentaire. (Cela ne se produit pas avec les styles de flux). Section 6.5 :
En outre, le pliage ne s'applique pas aux sauts de ligne entourant les lignes de texte qui contiennent des espaces blancs de tête. Notez qu'une telle ligne plus indentée peut être constituée uniquement de cet espace blanc de tête.
- >
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"]
Résumé
Dans ce tableau, _
signifie space character
. \n
signifie "caractère de nouvelle ligne" ( \n
en JavaScript) sauf dans la rubrique "Autres fonctions". L'"espacement" s'applique après la première ligne (qui établit l'indentation).
>
|
"
'
>-
>+
|-
|+
Les espaces et les retours à la ligne sont convertis en :
Espace arrière
_
_
_
_
_
_
Espace leader
\n_
\n_
\n_
\n_
\n_
\n_
Nouvelle ligne simple
_
\n
_
_
_
_
_
\n
\n
Double saut de ligne
\n
\n\n
\n
\n
\n
\n
\n
\n\n
\n\n
Nouvelle ligne finale
\n
\n
\n
\n
Double saut de ligne final
\n\n
\n\n
Comment créer un littéral :
Citation unique
'
'
'
'
''
'
'
'
'
Double citation
"
"
"
\"
"
"
"
"
"
Backslash
\
\
\
\\
\
\
\
\
\
Autres caractéristiques
Sauts de ligne avec \n
Nouvelles lignes sans espace avec \
#
ou :
en valeur
Peut commencer le même
ligne comme clé
Exemples
Notez les espaces de queue sur la ligne avant "espaces".
- >
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."
]
*
2 styles de bloc, chacun avec 2 indicateurs de fragmentation de bloc possibles (ou aucun), et avec 9 indicateurs d'indentation possibles (ou aucun), 1 style simple et 2 styles cités : 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63
Certaines de ces informations ont également été résumées ici .
2 votes
Conseil rapide : vous ne peut pas placer de commentaire à l'intérieur d'un scalaire Vous ne pouvez donc pas commenter une partie de la clé ou de la valeur multiligne. Vous devez déplacer les lignes requises hors de la déclaration. stackoverflow.com/questions/20890445/