是否可以做一个不区分大小写的 `gsub`?
Is it possible to do a case-insensitive `gsub`?
我正在做 gsub
以将 "bad"
换成 "good"
。有没有办法使用 capitalize
来交换大小写?或者我必须写两次 def
吗?
def add_more_ruby(string)
string.gsub('bad','good').capitalize
end
您可以传递 Regexp
而不是 String
,使用 i
选项表明此正则表达式不区分大小写:
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
当正则表达式匹配时,块被执行,块的return值被用作替换。
所以这会将 'Bad' 替换为 'Good',而 'bad' 将替换为任何其他大写和小写字母的排列(包括 'bad' 但也包括 'BAD'、'bAD' 等)与 'good'.
我正在做 gsub
以将 "bad"
换成 "good"
。有没有办法使用 capitalize
来交换大小写?或者我必须写两次 def
吗?
def add_more_ruby(string)
string.gsub('bad','good').capitalize
end
您可以传递 Regexp
而不是 String
,使用 i
选项表明此正则表达式不区分大小写:
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
当正则表达式匹配时,块被执行,块的return值被用作替换。
所以这会将 'Bad' 替换为 'Good',而 'bad' 将替换为任何其他大写和小写字母的排列(包括 'bad' 但也包括 'BAD'、'bAD' 等)与 'good'.