我正在做一个 gsub
调换 "bad"
对于 "good"
. 有没有办法使用 capitalize
所以它可以同时交换小写和大写?还是我必须写上 def
两次?
def add_more_ruby(string)
string.gsub('bad','good').capitalize
end
你可以通过 Regexp
而不是 String
,与 i
选项,表示这个regexp是不区分大小写的。
def add_more_ruby(string)
string.gsub(/bad/i, 'good')
end
请注意,它不仅会替换 'bad'
和 'BAD'
但也有,例如: 'bAd'
. 如果你想只用全大写或全小写代替,你可以这样做。
string.gsub(/bad|BAD/, 'good')
也可以选择使用块形式的 gsub
来处理不同的大写字母。
string.gsub(/bad/i) do |match|
match == 'Bad' ? 'Good' : 'good'
end
当regexp匹配时,该块会被执行,并使用该块的返回值作为替换。
因此,这将会把'Bad'替换成'Good',把用任何其他大写和小写字母组合写的'bad'替换成'good'(包括'bad',也包括'BAD','bAD'等)。