繁体   English   中英

Ruby:将字符串中的字符替换为其索引号

[英]Ruby : Replace a character in a String with its index number

我想在满足特定条件时替换字符串中的字符。 因此,我浏览了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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM