2014-02-20 31 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',有趣的事情也很有用:) –