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

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

"abcdefghijklmnopqrstuvwxyz"

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

>-
    abcdefghi
    jklmnopqr
    stuvwxyz

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

Ответы

Ответ 1

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

"abcdefghi\
jklmnopqr\
stuvwxyz"

Ответ 2

Есть несколько тонкостей, которые ответ Джесси ответит.

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

regexp: "\d{4}"

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

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

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

regexp: '\d{4}'

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

regexp: "\\d{4}"

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

s1: "this\
  is\
  a\
  test"

s2: 'this\
  is\
  a\
  test'

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

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

Это прямое следствие того, что YAML рассматривает одиночные кавычки как литералы, в то время как строки с двойными кавычками подвержены расширению escape-символа.