2012-06-25 71 views
1

您好我需要像這樣創建的字符串:帶有shell命令參數引號的Ruby字符串?

drawtext="fontfile=/Users/stpn/Documents/Video_Experiments/fonts/Trebuchet_MS.ttf:text='content':fontsize=100:fontcolor=red:y=h/2" 

我要像做

str = Q%[drawtext="fontfile=/Users/stpn/Documents/Video_Experiments/fonts/Trebuchet_MS.ttf:text='content':fontsize=100:fontcolor=red:y=h/2"] 

我得到這個:

=> "drawtext=\"fontfile=/Users/stpn/Documents/Video_Experiments/fonts/Trebuchet_MS.ttf:text='content':fontsize=100:fontcolor=red:y=h/2\"" 

轉義字符後等號的「drawtext =」是我想擺脫的。如何實現這一點?

該字符串將在命令行參數中使用。

+4

紅寶石殼檢查值時逃脫引號字符爲您服務。試試'puts str',它將完全按原樣打印字符串。我認爲它已經以你需要的形式出現了。 –

回答

4

和許多語言一樣,Ruby需要一種分隔引號引用的方式和引號。

你看到的是這是說字面報價,而不是語法報價的方式轉義字符:

foo = 'test="test"' 
# => "test=\"test\"" 

轉義字符僅僅是因爲有雙引號默認情況下使用時,檢查一個字符串。當然,它內部存儲爲單個字符。您還可以看到這些在其他情況下,如CR + LF分隔的文件行:

"example_line\r\n" 

\r\n這裏回車和換行字符對應。在ANSI C中定義了幾個這樣的字符,這些字符已經轉化爲許多語言,包括Ruby和JavaScript。

當你輸出字符串的轉義字符不顯示:

puts foo 
test="test"