我想在满足特定条件时替换字符串中的字符。于是,我通过红宝石的API文档去了,找到了gsub
,gsub!
等了类似的目的。当我在程序中实现该功能时,我没有出现任何错误,但也没有得到所需的输出。
我正在尝试的代码是这样的:
name.each_char { |c|
if name[c] == "a"
name.sub( name[c] , c )
puts "matched.... "
end
因此,例如,我有一个名为的字符串huzefa
,想要用其索引号替换所有字母。那么,怎么做呢?请举一个简单的例子详细解释。
gsub
发生匹配时,您可以将block传递给它并做您想做的一切。
为此,您可以使用gsub!
方法。
name = "Amanda"
new_name = name.gsub("a") do |letter|
puts "I've met letter: " + letter
"*"
end
# I've met letter: a
# I've met letter: a
# => "Am*nd*"
如果要使用索引,可以执行以下操作:
new_name = name.chars.map.with_index do |c, i|
if i.odd?
"*"
else
c
end
end.join
#=> => "A*a*d*"
在这里c
,i
被传递到块。c
是一个字符,i
是一个索引。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句