请注意,这个问题类似于这个问题,但仍然有所不同,因此那些答案无法解决我的问题:
只要我保持在一行内,这就没有问题,但我不知道如何将字符串内容分成多行。
YAML块标量风格(>,|)在这里无法帮助,因为它们不允许转义,甚至会进行一些空格剥离、换行符/空格替换,这对我的情况毫无用处。
似乎唯一的方法是使用双引号 " 和反斜杠 \ ,像这样:
这会导致输出结果为
- 要插入控制字符(例如
\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
。