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