Ruby:用字符串索引号替换String中的字符
我想在满足特定条件时替换字符串中的字符。 所以,我浏览了Ruby的API文档,找到了gsub
, gsub!
用于类似目的的等等。 当我在我的程序中实现它时,我没有得到任何错误,但也没有得到所需的输出。
我尝试的代码是这样的:
name.each_char { |c| if name[c] == "a" name.sub( name[c] , c ) puts "matched.... " end
因此,例如,我有一个名为huzefa
的字符串,并希望用其索引号替换所有字母。 那么,这样做的方法是什么? 请举一个简单的例子来详细说明。
您可以将块传递给gsub
并在匹配发生时执行任何您想要的操作。
要在现场进行,你可以使用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
是一个索引。
如果name=huzefa
并且你想用它的索引替换’a’..
name.split(//).map.with_index{|x,y| (x=='a')? y : x}.join
导致#> "huzef5"