2011-11-11 53 views
0

我在過去見過使用?性格要做到這一點。但我無法在互聯網上找到一個例子,很可能是因爲我不知道這種做法實際上被稱爲什麼。如何在Ruby中進行位置替換?

"? ? ?" % ['A','B','C'] 

產量:

"A B C" 

是我想要做的事。

回答

1

這就是所謂的路線插值。你可以這樣做:

"%s %s %s" % %w{A B C} 

查看this好文章瞭解更多信息。

2

你的問題不太清楚。如果你只想做printf般的變量替換,你可以像Dave向你:

> "%s %s %s" % ['A', 'B', 'C'] 
=> "A B C" 

如果你想惹的位置也一樣,你可以不喜歡的東西如下:

>> "%3$s %1$s %2$s " % ['A', 'B', 'C'] 
=> "C A B " 

或:

>> "%1$s %1$s %2$s %3$s" % ['A', 'B', 'C'] 
=> "A A B C" 

使用的?你還記得最有可能的是ActiveRecord的查詢的上下文。這是Rails的具體內容,但在純Ruby中不起作用。

+0

實際上,對於SQL佔位符(不僅僅是在Rails中),'?'是相當標準的,不僅僅是Rails特有的。這並沒有改變它不能在Ruby中工作的事實。 :) –

0

在Ruby中獲得'A B C' from ['A', 'B', 'C']的最好方法可能是做['A', 'B', 'C'].join ' '。但是,在一般情況下,String#%會像其他人所描述的那樣進行替換(使用'%s'-樣式的格式字符串)。檢查該方法的文檔和Kernel.sprintf