【发布时间】:2018-02-14 01:45:54
【问题描述】:
请注意,问题类似于this one,但仍然不同,因此这些答案无法解决我的问题:
- 用于插入控制字符,例如
\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 online parser 中尝试此操作会得到预期的"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。
【问题讨论】:
-
你能想出一个标题和第一段,更清楚地说明为什么这不是你链接到的现有问题的重复吗?特别是,您的情况有什么特别之处,the most up-voted answer 中的技术都不适用?我认为您的实际问题可能是“如何在多行字符串中保留前导空格?”或类似的东西。
-
完成。将对另一个问题的引用移至第一段,并在标题中插入“保留空格”。