如果我有以下字符串:如何改變一個字符串變量之間的值
str="hello %%one_boy%%'s something %%four_girl%%'s something more"
我將如何對其進行編輯以獲得從印刷海峽以下的輸出:
"hello ONE_BOY's something FOUR_GIRL's something more"
我一直試圖使用'gsub'和'upcase'方法,但我正在努力與正則表達式來獲取我的'%%'符號之間的每個單詞。
如果我有以下字符串:如何改變一個字符串變量之間的值
str="hello %%one_boy%%'s something %%four_girl%%'s something more"
我將如何對其進行編輯以獲得從印刷海峽以下的輸出:
"hello ONE_BOY's something FOUR_GIRL's something more"
我一直試圖使用'gsub'和'upcase'方法,但我正在努力與正則表達式來獲取我的'%%'符號之間的每個單詞。
ruby-1.9.2-p136 :066 > str.gsub(/%%([^%]+)%%/) {|m| $1.upcase}
=> "hello ONE_BOY's something FOUR_GIRL's something more"
的[^%]+
說,如果你能選擇的分隔符,將除1個%或更多字符,$1
is a global variable that stores the back reference to what was matched.
str.gsub(/%%([^%]+)%%/) { |match| $1.upcase }
這裏有一個快速和骯髒的方式:
"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)]
位片狀出本場比賽的中間(即剝去前端和後端兩個字符)。
s.gsub(/%%([^%]+)%%/) { $1.upcase }
不,沒關係。 – 2011-04-10 20:11:44
它適用於我 - 括號介於%%之間,因此捕獲只包括文本之間的文本。 – Steve 2011-04-10 20:14:24
匹配,您可能能夠使用String.interpolate從刻面寶石:
one_boy = "hello".upcase
str = "\#{one_boy}!!!"
String.interpolate{ str } #=> "HELLO!!!"
但我首先檢查Facets不會引起與Rails的任何衝突。
謝謝!這正是我需要的! – Coderama 2011-04-11 04:08:06