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

时间:2013-11-25 15:41:25

标签: ruby

如何创建一个字符串列表,在ruby中只有一个匹配模式的替换。

例如:

给定的字符串是“aaaazzzazazaaaazzzazaaaazz”。我需要用“A”代替“aaaa”。 所以我会得到一个这样的清单:

  • “Azzzazazaaaazzzazaaaazz”
  • “aaaazzzazazAzzzazaaaazz”
  • “aaaazzzazazaaaazzzazAzz”

     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) }
    

1 个答案:

答案 0 :(得分:5)

您可以将String#scan与块一起使用:

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

输出:

Azzzazazaaaazzzazaaaazz
aaaazzzazazAzzzazaaaazz
aaaazzzazazaaaazzzazAzz

$`$'global variables,引用最后一场比赛左侧和右侧的字符串。