Ruby:每次替换时创建新字符串

标签 ruby

如何在 ruby​​ 中创建仅用一次匹配模式替换的字符串列表。

例如:

给定的字符串是“aaaazzzazazaaaazzzazaaaazz”。我需要将“aaaa”替换为“A”。 所以我会得到一个这样的列表:

  • “啊啊啊啊啊啊啊啊啊”
  • “aaaazzzazazAzzzazaaaazz”
  • “啊啊啊啊啊啊啊啊”

     s = gets.strip
     stor="aaaa"
     sforr="A"
     a = s.split(stor)
     (a.length-1).times { |x| puts a[0..x].join(stor)+sforr+
                                   a[x+1..a.count-1].join(stor) }
    

最佳答案

您可以使用String#scan带 block :

str = "aaaazzzazazaaaazzzazaaaazz"
str.scan(/aaaa/) { |m| puts "#{$`}A#{$'}" }

输出:

Azzzazazaaaazzzazaaaazz
aaaazzzazazAzzzazaaaazz
aaaazzzazazaaaazzzazAzz

$`$'global variables ,引用最后一个匹配项左侧和右侧的字符串。

关于Ruby:每次替换时创建新字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20197082/

相关文章:

ruby - 如何获取 ruby​​ Nokogiri NodeSet 的 inner_html 未转义?

ruby - 试图覆盖 to_s

Ruby 枚举 : Taken first n where block returns true

ruby - 选择排序困惑

ruby 鞋ssh连接

ruby - 工头启动多个进程?

ruby - 如何检查 Ruby 文件是否为空?

c - 为什么 ruby​​ 的 `tap` 版本比 C 实现的版本快?

ruby-on-rails - 如何使用 ruby​​ on rails 从 redis 获取所有匹配的 key

ruby-on-rails - cucumber 的依赖性