我正在gsub
为"bad"
交换"good"
。有没有办法使用capitalize
所以它会交换大小写?或者我必须写两次def
吗?
def add_more_ruby(string)
string.gsub('bad','good').capitalize
end
答案 0 :(得分:37)
您可以传递Regexp
而不是String
,其中i
选项表示此正则表达式不区分大小写:
def add_more_ruby(string)
string.gsub(/bad/i, 'good')
end
请注意,它不仅会替换'bad'
和'BAD'
,还会替代'bAd'
。如果您只想替换全大写或全小写,您可以这样做:
string.gsub(/bad|BAD/, 'good')
答案 1 :(得分:0)
还可以使用gsub
的块形式来不同地处理不同的大小写:
string.gsub(/bad/i) do |match|
match == 'Bad' ? 'Good' : 'good'
end
当正则表达式匹配时,将执行该块,并将该块的返回值用作替换。
因此,这会将“ Bad”替换为“ Good”,并将“ bad”替换为其他任何大写字母和小写字母(包括“ bad”但也包括“ BAD”,“ bAD”等),并替换为“ good” '。