Do I need quotes for strings in YAML?
我正试图为Rails项目的国际化编写一个yaml字典。不过,我有点困惑,因为在某些文件中,我看到双引号中的字符串,而在一些没有双引号的文件中。需要考虑的几点:
- 示例1-所有字符串都使用双引号;
- 示例2-没有字符串(除了最后两个)使用引号;
- yamlcookbook说:用双引号括住字符串可以使用escaping来表示ASCII和Unicode字符。这是否意味着我只需要在想要转义某些字符时使用双引号?如果是-为什么他们在第一个例子中到处使用双引号-仅仅是为了统一/风格原因?
- 示例2的最后两行使用
! ——非特定标记,而第一个示例的最后两行不使用——它们都可以工作。
我的问题是:在yaml中使用不同类型引号的规则是什么?
可以说:
- 一般来说,你不需要报价;
- 如果要转义字符,请使用双引号;
- 当……?!?
在简要回顾了问题中引用的山药食谱和一些测试之后,我的解释如下:
- 一般来说,您不需要引号。
- 使用引号强制一个字符串,例如,如果您的键或值是
10 ,但您希望它返回一个字符串而不是fixnum,则写入'10' 或"10" 。 - 如果你的价值包括特殊字符(如:
: ,{ ,} ,[ ,] ,, ,& ,* ,# ,EDOCX11〔12〕,| ,- ,EDOCX11〔15〕,EDOCX11〔16〔16〕16〔16〔16〕,EDOCX11〔16〕,EDOCX11〔10〕,EDOCX11〔10〕,EDOCX11〔11〕,EDOCX11〔11〕,EDOCX11〔12〕,EDOCX11〔12〕,EDOCX11〔13〕,EDOCX11〔13、= 、! 、% 、@ 、\ 。 - 单引号可以让您在字符串中放入几乎任何字符,并且不会尝试解析转义代码。
' 将作为字符串
' 返回。
- 双引号解析转义码。
" 将作为换行符返回。
" - 感叹号引入了一种方法,例如
!ruby/sym 返回一个红宝石符号。
在我看来,最好的方法是不使用引号,除非你必须使用,然后使用单引号,除非你特别想处理转义代码。
更新
"是"和"否"应包含在引号中(单引号或双引号),否则它们将被解释为真类和假类值:
1 2 3 4 | en: yesno: 'yes': 'Yes' 'no': 'No' |