YAML 對於“但又另一種加價語言”或“非加價語言的YAML”來說是很短的,後者用來強調YAML是用於資料而非文件。YAML 是一種資料序列化語言,用於寫入配置檔案,以部署基礎架構。舉例來說,如果您想將 Docker 應用程式部署到 Kubernetes您會使用 YAML 檔案來設定執行個體。YAML 是人類可讀的,因此在部署期間建立檔案並讀取說明非常簡單。
如果您是 YAML 新手,您很快就會意識到需要一種方法將串列分解為多行,這是網路上最常見的 YAML 問題之一。在本文章中,我們將探討 YAML 多行字串的兩種主要方法,以及其他一些常見問題。
YAML 與 Whitespace:須知事項
YAML 檔案使用空白字元和歸位字元,但內容會在擷取到特定資源時序列化。建立 YAML 檔案的開發人員可以使用縮排和間距來格式化文字,以便於閱讀。YAML 使用與其他語言相似的方式處理空白空間,因此您可以視需要擁有更多空間來格式化檔案。
如何打破 YAML 多線字串的界限
擷取 YAML 檔案時,有時可能想要將換行時間保留在多行字串中。以下列虛擬程式碼為例:
金鑰:
項目1
項目2
項目3
在每個明細項目 (例如項目 1、項目 2 和項目 3) 之後,您都會有歸位字元。如果您將 YAML 語法維持原樣,則字串會變成以下內容:
項目 1 項目 2 項目 3
此字串格式建立了一個長字串,而沒有任何換行格式,因此您可能要保留換行次數。文字操作者可以保留斷線。文學運算子是管道 (“|”) 字元。為維持換行,您的 YAML 語法應變更為以下項目:
金鑰:|
項目1
項目2
項目3
請注意“關鍵”指令之後的管道特性。當應用程式擷取 YAML 檔案時,會轉換成下列字串:
項目1\nitem2\nitem3
“\n” 字元代表一條新行。將這個字串列印到應用程式時,每個項目都會顯示附加的歸位符號,以保留 YAML 指令中的格式。
YAML 多線區塊 vs. 長線
對於長字串,您需要使用多行區塊來讀取 YAML 檔案。例如,如果您的 YAML 檔案中有 250 字的段落,您需要將句子分成多行區塊。除段落結尾外,您不想保留歸位字元。您可以格式化 YAML 檔案,以使用多行長字串,並將字串序列化,以附加空格到每個項目,而非新的行字元。
若要使用空白字元而非附加新行,請使用折疊式(>)運算子:
金鑰:>
項目1
項目2
項目3
YAML 透過折疊的運算子,在建立字串時增加空間。字串如下:
項目1 項目2 項目3\n
YAML 多線常見問題
如何在 YAML 中插入換行次數?
使用常值運算子 (“|”),將保留 YAML 字串中的任何換行次數。使用歸位按鍵動作建立換行時,方式與在標準文件中建立換行時相同。以下範例保留 YAML 字串中的歸位符號:
金鑰:|
項目1
項目2
項目3
YAML 可以有空白行嗎?
可以,以文字區塊表示的字串也可以包含空白行。保留運算子(“|+”) 保留空白行,以及新的行字元。下列 YAML 是多行字串的範例,在區塊結尾處有兩個空行:
金鑰: |+
項目1
項目2
項目3
YAML 剖析器會顯示上述語法中的下列字串:
項目1\nitem2\nitem3\n\n
YAML 是否關心空白?
分頁空白是 YAML 中的非法字元,因此任何縮排都必須搭配標準單一空白字元使用。標籤可用於引用的字串中,但無法用於格式化 YAML 檔案。空白凹痕的一致性對於資料可讀性非常重要。
YAML 是否允許空間?
可以,您可以在 YAML 檔案中擁有標準空間。空格應用於縮排,而非標籤字元。標籤字元在剖析 YAML 檔案時可能導致錯誤。