首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby gsub字符串中的多个字符

Ruby gsub字符串中的多个字符
EN

Stack Overflow用户
提问于 2013-12-18 13:59:03
回答 5查看 20.3K关注 0票数 19

使用Ruby 1.9.3,Rails 3.2,我有以下几点:

代码语言:javascript
复制
"every good boy does fine".gsub("every", "all").gsub("boy", "girl").gsub("fine", "well")
# => "all good girl does well"

有没有更好的方法来写这篇文章?谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-12-18 14:07:13

String#gsubHash#fetch将是很好的选择。

代码语言:javascript
复制
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"

或,

代码语言:javascript
复制
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"
票数 21
EN

Stack Overflow用户

发布于 2013-12-18 14:03:36

代码语言:javascript
复制
replacements = [ ["every", "all"], ["boy", "girl"],["fine", "well"]
replacements.each {|replacement| str.gsub!(replacement[0], replacement[1])}

我不知道是不是更好,但干净多了。

票数 4
EN

Stack Overflow用户

发布于 2013-12-18 14:09:58

代码语言:javascript
复制
subs = { "every" => "all", "boy" => "girl", "fine" => "well" }
"every good boy does fine".gsub(/\w+/) { |m| subs[m] || m }
# => 'all good girl does well'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20650681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档