2013-08-17 109 views
1

我有類似下面的字符串中的字符串轉換:如何包含換行符到多YAML

test_string = "This is a multiple line string \n 
containing new line characters. \n 
Another new line." 

我試圖使用to_yaml功能,將其轉換爲一個多YAML字符串,但它會自動轉義新的行字符。

test_string.to_yaml 

輸出:

=> "--- ! This is a multiple line string \\ncontaining new line characters. 
\\nAnother new line." 

如何創建一個包含"\n"一個字符串,並將其解析爲YAML?

編輯: 事實證明,如果您在「\ n」之前放置空格,to_yaml函數將會跳過新行。以下字符串解決了該問題:

test_string = "This is a multiple line string\n 
containing new line characters.\n 
Another new line." 
+0

我懷疑你是用'p'還是'inspect'來顯示YAML? – Borodin

回答

0

此字符串來自哪裏?如果這是真正的Ruby代碼,那麼該字符串將包含成對的換行字符,而不是兩個字符\n

雙引號裏面\n被轉換爲一個換行字符,所以在行結尾處的換行符中,每行後面會有兩個換行符。但是to_yaml正在看到一個反斜槓(它以第二個反斜槓轉義),然後是逐字傳遞的n

在YAML中沒有表示字符串的獨特方式。 String#to_yaml(或YAML.dump)會生成字符串數據的單引號流式樣,除非數據包含必須用雙引號表示的字符。換行符在YAML數據中用空行表示。

這個簡短的程序演示。

require 'yaml' 

puts "aa\nbb\n".to_yaml 

輸出

--- ! 'aa 

    bb 

' 
相關問題