使用Ruby 1.9.3,Rails 3.2,我有以下几点:
"every good boy does fine".gsub("every", "all").gsub("boy", "girl").gsub("fine", "well")
# => "all good girl does well"
有没有更好的方法来写这篇文章?谢谢。
发布于 2013-12-18 14:07:13
String#gsub
和Hash#fetch
将是很好的选择。
a = "every good boy does fine"
h = {"every" => "all","boy" => "girl", "fine" =>"well" }
a.gsub(/\w+/) { |m| h.fetch(m,m)}
# => "all good girl does well"
或,
a = "every good boy does fine"
h = {"every" => "all","boy" => "girl", "fine" =>"well" }
Regexp.new("^#{h.keys.join('|')}$") # => /^every|boy|fine$/
a.gsub(Regexp.new("^#{h.keys.join('|')}$"),h)
# => "all good girl does well"
发布于 2013-12-18 14:03:36
replacements = [ ["every", "all"], ["boy", "girl"],["fine", "well"]
replacements.each {|replacement| str.gsub!(replacement[0], replacement[1])}
我不知道是不是更好,但干净多了。
发布于 2013-12-18 14:09:58
subs = { "every" => "all", "boy" => "girl", "fine" => "well" }
"every good boy does fine".gsub(/\w+/) { |m| subs[m] || m }
# => 'all good girl does well'
https://stackoverflow.com/questions/20650681
复制相似问题