Есть ли способ представить длинную строку, которая не имеет пробелов в нескольких строках в документе YAML?

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

"abcdefghijklmnopqrstuvwxyz"

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

>-
    abcdefghi
    jklmnopqr
    stuvwxyz

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

2 ответа

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

"abcdefghi\
jklmnopqr\
stuvwxyz"

Есть некоторые тонкости, которые Джесси пропустит.

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 рассматривает строки в одинарных кавычках как литералы, в то время как строки в двойных кавычках подвергаются расширению экранирующих символов.

Другие вопросы по тегам