2011-04-10 89 views
0

如果我有以下字符串:如何改變一個字符串變量之間的值

str="hello %%one_boy%%'s something %%four_girl%%'s something more" 

我將如何對其進行編輯以獲得從印刷海峽以下的輸出:

"hello ONE_BOY's something FOUR_GIRL's something more" 

我一直試圖使用'gsub'和'upcase'方法,但我正在努力與正則表達式來獲取我的'%%'符號之間的每個單詞。

回答

-1
str.gsub(/%%([^%]+)%%/) { |match| $1.upcase } 
0

這裏有一個快速和骯髒的方式:

"hello %%one_boy%%'s something %%four_girl%%'s something more".gsub(/(%%.*?%%)/) do |x| 
    x[2 .. (x.length-3)].upcase 
end 

x[2 .. (x.length-3)]位片狀出本場比賽的中間(即剝去前端和後端兩個字符)。

3
s.gsub(/%%([^%]+)%%/) { $1.upcase } 
+0

不,沒關係。 – 2011-04-10 20:11:44

+0

它適用於我 - 括號介於%%之間,因此捕獲只包括文本之間的文本。 – Steve 2011-04-10 20:14:24

0

匹配,您可能能夠使用String.interpolate從刻面寶石:

one_boy = "hello".upcase 
str = "\#{one_boy}!!!" 
String.interpolate{ str } #=> "HELLO!!!" 

但我首先檢查Facets不會引起與Rails的任何衝突。

相關問題