YAML中多行字符串的配置方法總結(jié)
有時(shí)候我們會(huì)在配置文件中設(shè)置一段文字說(shuō)明,這時(shí)通常會(huì)出現(xiàn)兩種需求:
- 文字中可能出現(xiàn)段落,希望在配置中按段落方式編寫,顯示打印的時(shí)候也能出現(xiàn)段落換行。
- 文字很長(zhǎng),為方便編輯,可能在配置文件中分段寫,但是顯示的時(shí)候不喜歡出現(xiàn)配置中的段落換行。
簡(jiǎn)單的說(shuō),就是:
- 配置與顯示,都嚴(yán)格按段落展示
- 配置按段落,顯示不需要按段落
假設(shè),我們需要配置這樣一段文字:
- I am a coder.My blog is didispace.com.
下面,就針對(duì)上面的兩種情況來(lái)看看可以怎么來(lái)實(shí)現(xiàn):
配置與顯示,都嚴(yán)格按段落展示
這個(gè)需求下,我們希望配置和顯示都按句子換行,就是這樣:
- I am a coder.
- My blog is didispace.com.
方法一:直接使用\n來(lái)?yè)Q行
這樣寫:
- string: "I am a coder.\n\
- My blog is didispace.com."
最終輸出:
- I am a coder.
- My blog is didispace.com.
通過(guò)\n在顯示的時(shí)候換行,通過(guò)配置行末的\讓這個(gè)字符串換行繼續(xù)寫(這個(gè)必須有,如果沒(méi)有第二行行首會(huì)多一個(gè)空格)。
注意:這里必須使用雙引號(hào)來(lái)定義字符串,不能用單引號(hào)。因?yàn)閱我?hào)是不支持\n換行的。
方法二:使用|、|+、|-
在方法一種,其實(shí)我們?cè)谖淖种屑尤肓藥讉€(gè)轉(zhuǎn)義符號(hào),其實(shí)對(duì)于閱讀并不方便。在方法二中,將介紹更適合閱讀的幾種形式:
- string1: |
- I am a coder.
- My blog is didispace.com.
- string2: |+
- I am a coder.
- My blog is didispace.com.
- string3: |-
- I am a coder.
- My blog is didispace.com.
如上面一共有三種配置都會(huì)自動(dòng)按配置中所寫的換行來(lái)?yè)Q行,但是在文末會(huì)有一些區(qū)別,有的會(huì)增加一個(gè)空行,有的不會(huì),有的會(huì)新增兩個(gè)空行,具體說(shuō)明如下:
- |:文中自動(dòng)換行 + 文末新增一空行
- |+:文中自動(dòng)換行 + 文末新增兩空行
- |-:文中自動(dòng)換行 + 文末不新增行
配置按段落,顯示不需要按段落
這個(gè)需求下,我們希望配置里是按行寫的,但是顯示是如下面這樣在一行的:
- I am a coder.My blog is didispace.com.
方法一:直接在字符串中換行寫
最粗暴的寫法,反正不用換行,那就直接寫了:
- string: 'I am a coder.
- My blog is didispace.com.'
這里不論用雙引號(hào)還是單引號(hào)都是可以的。因?yàn)椴淮嬖谛枰D(zhuǎn)移的內(nèi)容,所以總體還算清晰。
方法二:使用>、>+、>-
比較好的表述方式就是使用>、>+、>-來(lái)定義,比如下面這幾種:
- string1: >
- I am a coder.
- My blog is didispace.com.
- string2: >+
- I am a coder.
- My blog is didispace.com.
- string3: >-
- I am a coder.
- My blog is didispace.com.
這三種都不會(huì)對(duì)配置中的換行進(jìn)行實(shí)際換行,但是依然在文末的處理會(huì)有一些小區(qū)別,具體如下:
- >:文中不自動(dòng)換行 + 文末新增一空行
- >+:文中不自動(dòng)換行 + 文末新增兩空行
- >-:文中不自動(dòng)換行 + 文末不新增行
【本文為51CTO專欄作者“翟永超”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)51CTO聯(lián)系作者獲取授權(quán)】