2014-02-20 59 views
0
處理字符串

我會通過一些代碼片段時,我發現這條線什麼是做%,而在Ruby中

if ('%{test}' % {:test => 'replaced'} == 'replaced') 
    # If this works, we are all good to go. 

爲什麼'%{test}' % {:test => 'replaced'}返回值"replaced"%究竟是幹什麼的?

+0

PS:請編輯文章,如果你來了有一個更好的標題。 –

+1

不錯的警告:-)我也在讀它..似乎對我來說完美的標題.. +1爲好的標題。 –

+1

如果您是Ruby的新手,方法''的接收者是'String'類的實例,所以您可以在[String#%]下找到'%'的文檔(http://www.ruby -doc.org/core-2.1.0/String.html#method-i-25)。 –

回答

4

這是做「插值」。將散列的密鑰:test的值"replaced"插入到原始字符串'%{test}'中的%{test}位置。

%可以根據需要採取字符串,數組或哈希值。當你只有在模板單槽在這種情況下,最好使用%s和傳遞一個字符串像

"%s" % "replaced" 

有了具體的例子,它是沒有用的。

當您想要替換字符串的一部分時它變得很有用。 例如,如果你想生成一系列字符串:

"Hello World", "Hey World", "Bye World" 

你可以有一個模板字符串s = "%s World"和插值東西放到它像

s % "Hello" 
s % "Hey" 
s % "Bye" 
+0

我剛剛嘗試過'%= s',有趣的事情也很有用:) –