3
我試圖在Ruby中將環境變量插入到字符串中,但沒有多少運氣。如果在沒有匹配環境變量的初始字符串中找到佔位符,我的一個要求就是做一些事情(記錄錯誤,提示輸入,無論如何)。它看起來像字符串#掃描的塊形式是我需要的。下面是我嘗試失敗的irb會話。使用字符串將環境變量插入到Ruby中的字符串#scan
irb(main):014:0> raw_string = "need to replace %%FOO%% and %%BAR%% in here"
=> "need to replace %%FOO%% and %%BAR%% in here"
irb(main):015:0> cooked_string << raw_string
=> "need to replace %%FOO%% and %%BAR%% in here"
irb(main):016:0> raw_string.scan(/%%(.*?)%%/) do |var|
irb(main):017:1* cooked_string.sub!("%%#{var}%%", ENV[var])
irb(main):018:1> done
irb(main):019:1> end
TypeError: cannot convert Array into String
from (irb):17:in `[]'
from (irb):17
from (irb):16:in `scan'
from (irb):16
from :0
如果我使用ENV["FOO"]
手動插入其中一個,它工作正常。我正把頭撞在桌子上。我究竟做錯了什麼?
Ruby在RHEL上是1.8.1,在Cygwin上是1.8.7。
啊,哈。萬分感謝。而我認爲那裏的「我的行動」不會成爲一個障礙嗎? – robc 2010-03-17 04:28:42
嗯,它可以是任何表達式,比如方法調用,你可以使用一個方法來接受一個塊......這是一個很酷的Ruby特性,你可以使用單個paren表達式中的語句:'(p'x '; system'echo y'; 234)' – DigitalRoss 2010-03-17 17:17:38