41 votes

Existe-t-il un moyen de représenter une longue chaîne de caractères qui n'a pas d'espace sur plusieurs lignes dans un document YAML ?

Disons que j'ai la chaîne suivante :

"abcdefghijklmnopqrstuvwxyz"

Et je pense que c'est trop long pour une ligne dans mon fichier YAML, y a-t-il un moyen de le répartir sur plusieurs lignes ?

>-
    abcdefghi
    jklmnopqr
    stuvwxyz

Entraînerait "abcdefghi jklmnopqr stuvwxyz" ce qui est proche, mais il ne devrait pas y avoir d'espace.

39voto

Jesse Beder Points 14026

Utilisez des guillemets et échappez la nouvelle ligne :

"abcdefghi\
jklmnopqr\
stuvwxyz"

13voto

larsks Points 23184

Il y a quelques subtilités que la réponse de Jesse manquera.

YAML (comme de nombreux langages de programmation) traite différemment les guillemets simples et doubles. Considérez ce document :

regexp: "\d{4}"

L'analyse syntaxique échouera avec une erreur telle que :

a trouvé un caractère d'échappement inconnu lors de l'analyse d'un scalaire cité à la ligne 1 colonne 9

Comparez cela à :

regexp: '\d{4}'

Ce qui sera analysé correctement. Pour utiliser le caractère backslash à l'intérieur d'une chaîne de caractères doublement citée, vous devez l'échapper, comme dans :

regexp: "\\d{4}"

J'aimerais également souligner le commentaire de Steve sur les chaînes de caractères à guillemets simples. Considérez ce document :

s1: "this\
  is\
  a\
  test"

s2: 'this\
  is\
  a\
  test'

Une fois analysé, vous constaterez qu'il est équivalent à :

s1: thisisatest
s2: "this\\ is\\ a\\ test"

C'est le résultat direct du fait que YAML traite les chaînes à guillemets simples comme des littéraux, alors que les chaînes à guillemets doubles sont soumises à l'expansion des caractères d'échappement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X