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

9vw9lbht  于 2024-01-07  发布在  Ruby
关注(0)|答案(3)|浏览(155)

我想在满足特定条件时替换字符串中的一个字符。所以,我浏览了Ruby的API文档,找到了gsubgsub!等类似的目的。当我在程序中实现时,我没有得到任何错误,但也没有得到想要的输出。
我尝试的代码是这样的:

  1. name.each_char { |c|
  2. if name[c] == "a"
  3. name.sub( name[c] , c )
  4. puts "matched.... "
  5. end

字符串
例如,我有一个名为huzefa的字符串,我想用它的索引号替换所有的字母。那么,怎么做呢?请通过一个简单的例子详细解释。

mfuanj7w

mfuanj7w1#

你可以把块传递给gsub,当匹配发生时做任何你想做的事情。
你可以使用gsub!方法来实现。

  1. name = "Amanda"
  2. new_name = name.gsub("a") do |letter|
  3. puts "I've met letter: " + letter
  4. "*"
  5. end
  6. # I've met letter: a
  7. # I've met letter: a
  8. # => "Am*nd*"

字符串
如果你想使用索引,你可以这样做:

  1. new_name = name.chars.map.with_index do |c, i|
  2. if i.odd?
  3. "*"
  4. else
  5. c
  6. end
  7. end.join
  8. #=> => "A*a*d*"


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

展开查看全部
u5i3ibmn

u5i3ibmn2#

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

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

字符串
结果为#> "huzef5"

dzjeubhm

dzjeubhm3#

index前的部分字符串+ new char + index后的部分字符串:

  1. a = "hello"
  2. idx = 3
  3. new_char = "z"
  4. a[0..(idx-1)] + new_char + a[(idx+1)..-1]
  5. # => "helzo"

字符串

相关问题