我正在尋找一種簡潔的方式來將所有在字符串中找到的整數加1並返回完整的字符串。Ruby:將字符串中的所有整數加1 +1
例如:
"1 plus 2 and 10 and 100"
需求,成爲
"2 plus 3 and 11 and 101"
我可以找到所有的整數很容易與
"1 plus 2 and 10 and 100".scan(/\d+/)
但我被困在這一點上試圖增加並重新放回零件。
在此先感謝。
我正在尋找一種簡潔的方式來將所有在字符串中找到的整數加1並返回完整的字符串。Ruby:將字符串中的所有整數加1 +1
例如:
"1 plus 2 and 10 and 100"
需求,成爲
"2 plus 3 and 11 and 101"
我可以找到所有的整數很容易與
"1 plus 2 and 10 and 100".scan(/\d+/)
但我被困在這一點上試圖增加並重新放回零件。
在此先感謝。
你可以使用block form of String#gsub:
str = "1 plus 2 and 10 and 100".gsub(/\d+/) do |match|
match.to_i + 1
end
puts str
輸出:
2 plus 3 and 11 and 101
與你的正則表達式的東西是,它不會保留鏈中的原始字符串以便將其放回。我所做的是使用空格分割它,發現它是用w.to_i != 0
單詞或整數(不包括0的整數,你可能想改善這一點),增加一個,並加入回:
s = "1 plus 2 and 10 and 100"
s.split(" ").map{ |e| if (e.to_i != 0) then e.to_i+1 else e end }.join(" ")
=> "2 plus 3 and 11 and 101"
的gsub
方法可以在塊,這樣你就可以做到這一點
>> "1 plus 2 and 10 and 100".gsub(/\d+/){|x|x.to_i+1}
=> "2 plus 3 and 11 and 101"
甜!我知道有一個超級簡單的方法來做到這一點。謝謝! – NullRef
這很酷。不知道gsub佔用了塊。 – jergason