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

时间:2015-10-25 12:24:10

标签: ruby

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

我正在尝试的代码是:

name.each_char  { |c|

if name[c] == "a"
    name.sub( name[c] , c )
    puts "matched....   "
end

因此,例如,我有一个名为huzefa的字符串,并希望用其索引号替换所有字母。那么,这样做的方法是什么?请举一个简单的例子详细解释。

2 个答案:

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

此处ci传递给该块。 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