我想在满足特定条件时替换字符串中的字符。所以,我浏览了Ruby的API文档,并为了类似的目的找到了gsub
,gsub!
等。当我在我的程序中实现它时,我没有遇到任何错误,但也没有得到所需的输出。
我正在尝试的代码是:
name.each_char { |c|
if name[c] == "a"
name.sub( name[c] , c )
puts "matched.... "
end
因此,例如,我有一个名为huzefa
的字符串,并希望用其索引号替换所有字母。那么,这样做的方法是什么?请举一个简单的例子详细解释。
答案 0 :(得分:3)
您可以将阻止传递给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
是一个索引。
答案 1 :(得分:3)
如果ls -i | sort -n | cut -d' ' -f2 | fgrep \.gz | parallel -j100% --group "gzcat {} | grep -lq <..> && echo {}
并且您想要将'a'替换为其索引..
name=huzefa
导致name.split(//).map.with_index{|x,y| (x=='a')? y : x}.join