天天看點

YAML中多行字元串的配置方法總結

有時候我們會在配置檔案中設定一段文字說明,這時通常會出現兩種需求:

  1. 文字中可能出現段落,希望在配置中按段落方式編寫,顯示列印的時候也能出現段落換行。
  2. 文字很長,為友善編輯,可能在配置檔案中分段寫,但是顯示的時候不喜歡出現配置中的段落換行。

簡單的說,就是:

  1. 配置與顯示,都嚴格按段落展示
  2. 配置按段落,顯示不需要按段落

假設,我們需要配置這樣一段文字:

I am a coder.My blog is didispace.com.      

下面,就針對上面的兩種情況來看看可以怎麼來實作:

https://blog.didispace.com/yaml-string-multi-line/#%E9%85%8D%E7%BD%AE%E4%B8%8E%E6%98%BE%E7%A4%BA%EF%BC%8C%E9%83%BD%E4%B8%A5%E6%A0%BC%E6%8C%89%E6%AE%B5%E8%90%BD%E5%B1%95%E7%A4%BA

這個需求下,我們希望配置和顯示都按句子換行,就是這樣:

I am a coder.
My blog is didispace.com.      

方法一:直接使用

\n

來換行

這樣寫:

string: "I am a coder.\n\
         My blog is didispace.com."      

最終輸出:

I am a coder.
My blog is didispace.com.      

通過

\n

在顯示的時候換行,通過配置行末的

\

讓這個字元串換行繼續寫(這個必須有,如果沒有第二行行首會多一個空格)。

注意:這裡必須使用雙引号來定義字元串,不能用單引号。因為單引号是不支援

\n

換行的。

https://blog.didispace.com/yaml-string-multi-line/#%E6%96%B9%E6%B3%95%E4%BA%8C%EF%BC%9A%E4%BD%BF%E7%94%A8%EF%BD%9C%E3%80%81%EF%BD%9C-%E3%80%81%EF%BD%9C 方法二:使用

|+

|-

在方法一種,其實我們在文字中加入了幾個轉義符号,其實對于閱讀并不友善。在方法二中,将介紹更适合閱讀的幾種形式:

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.      

如上面一共有三種配置都會自動按配置中所寫的換行來換行,但是在文末會有一些差別,有的會增加一個空行,有的不會,有的會新增兩個空行,具體說明如下:

  • |

    :文中自動換行 + 文末新增一空行
  • |+

    :文中自動換行 + 文末新增兩空行
  • |-

    :文中自動換行 + 文末不新增行

https://blog.didispace.com/yaml-string-multi-line/#%E9%85%8D%E7%BD%AE%E6%8C%89%E6%AE%B5%E8%90%BD%EF%BC%8C%E6%98%BE%E7%A4%BA%E4%B8%8D%E9%9C%80%E8%A6%81%E6%8C%89%E6%AE%B5%E8%90%BD

這個需求下,我們希望配置裡是按行寫的,但是顯示是如下面這樣在一行的:

I am a coder.My blog is didispace.com.      

方法一:直接在字元串中換行寫

最粗暴的寫法,反正不用換行,那就直接寫了:

string: 'I am a coder.
         My blog is didispace.com.'      

這裡不論用雙引号還是單引号都是可以的。因為不存在需要轉移的内容,是以總體還算清晰。

https://blog.didispace.com/yaml-string-multi-line/#%E6%96%B9%E6%B3%95%E4%BA%8C%EF%BC%9A%E4%BD%BF%E7%94%A8-gt-%E3%80%81-gt-%E3%80%81-gt

>

>+

>-

比較好的表述方式就是使用

>

>+

>-

來定義,比如下面這幾種:

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.      

這三種都不會對配置中的換行進行實際換行,但是依然在文末的處理會有一些小差別,具體如下:

  • >

    :文中不自動換行 + 文末新增一空行
  • >+

    :文中不自動換行 + 文末新增兩空行
  • >-

    :文中不自動換行 + 文末不新增行

繼續閱讀