Есть ли способ представить длинную строку, которая не имеет пробелов в нескольких строках в документе YAML? - PullRequest
23 голосов
/ 07 июня 2011

Скажите, у меня есть следующая строка:

"abcdefghijklmnopqrstuvwxyz"

И я думаю, что это слишком долго для одной строки в моем файле YAML, есть ли способ разделить это на несколько строк?

>-
    abcdefghi
    jklmnopqr
    stuvwxyz

Результатом будет "abcdefghi jklmnopqr stuvwxyz", что близко, но в нем не должно быть пробелов.

Ответы [ 2 ]

25 голосов
/ 03 июля 2011

Используйте двойные кавычки и экранируйте новую строку:

"abcdefghi\
jklmnopqr\
stuvwxyz"
6 голосов
/ 08 сентября 2017

Существуют некоторые тонкости, которые Джесси пропустит.

YAML (как и многие языки программирования) обрабатывает одинарные и двойные кавычки по-разному. Рассмотрим этот документ:

regexp: "\d{4}"

Это не удастся проанализировать с ошибкой, такой как:

обнаружил неизвестный escape-символ при разборе цитируемого скаляра в строке 1 столбца 9

Сравните это с:

regexp: '\d{4}'

Который будет правильно разбираться. Чтобы использовать символ обратной косой черты внутри строк в двойных кавычках, вам нужно их экранировать, например:

regexp: "\\d{4}"

Я также хотел бы выделить комментарий Стива о одиночных кавычках. Рассмотрите этот документ:

s1: "this\
  is\
  a\
  test"

s2: 'this\
  is\
  a\
  test'

При анализе вы обнаружите, что это эквивалентно:

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

Это прямой результат того факта, что YAML рассматривает строки в одинарных кавычках как литералы, в то время как строки в двойных кавычках подлежат расширению экранирующих символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...