Обратите внимание, что вопрос аналогичен, например этот, но по-прежнему отличается тем, что эти ответы не решают мою проблему:
- Для ввода управляющих символов, например,
\x08, мне кажется, что мне нужно использовать двойные кавычки". - Все пробелы должны быть сохранены точно так, как указано. Для разрывов строк я использую явно
\n.
У меня есть некоторые строковые данные, которые мне нужно сохранить в YAML, например:
-
" This is my quite long string data " -
"This is my quite long string data" -
"This_is_my_quite_long_string_data" -
"Sting data\nwhich\x08contains control characters"
и нужно в YAML как-то вроде этого:
Key: " This is my" +
" quite long " +
" string data "
Это не проблема, если я остаюсь на одной строке, но я не знаю, как помещать содержимое строки в несколько строк.
Скалярные стили блоков блока YAML (>, |) здесь не помогут, поскольку они не позволяют экранировать, и даже выполняют некоторую пробельную дескрипцию, замену новой строки/пространства, которая бесполезна для моего случая.
Похоже, что единственный способ - использовать двойное цитирование " и обратную косую черту \, например:
Key: "\
This is \
my quite \
long string data\
"
Попытка сделать это в онлайн-парсер YAML приводит к "This is my quite long string data", как ожидалось.
Но он, к сожалению, терпит неудачу, если одна из "подстрок" имеет ведущее пространство, например:
Key: "\
This is \
my quite\
long st\
ring data\
"
Это приводит к "This is my quitelong string data", удаляет пробел между словами quite и long этого примера. Единственное, что приходит мне на ум, чтобы решить это, - заменить первое ведущее пространство каждой подстроки на \x20 следующим образом:
Key: "\
This is \
my quite\
\x20long st\
ring data\
"
Как я выбрал YAML для получения максимально удобного для человека формата, я считаю, что \x20 немного уродливое решение. Может быть, кто-то знает лучший подход?
Для сохранения читаемости человеком я также не хочу использовать !!binary для этого.