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