Ruby:用字符串索引号替换String中的字符

我想在满足特定条件时替换字符串中的字符。 所以,我浏览了Ruby的API文档,找到了gsubgsub! 用于类似目的的等等。 当我在我的程序中实现它时,我没有得到任何错误,但也没有得到所需的输出。

我尝试的代码是这样的:

 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*" 

这里ci被传递给块。 c是一个字符, i是一个索引。

如果name=huzefa并且你想用它的索引替换’a’..

 name.split(//).map.with_index{|x,y| (x=='a')? y : x}.join 

导致#> "huzef5"