2013-11-25 3 views
2

Как создать список строк с одной заменой совпадающего шаблона в ruby.Ruby: Создайте новую строку при каждой замене

Например:

Данная строка "aaaazzzazazaaaazzzazaaaazz". Мне нужно заменить «aaaa» на «A». Так что я хотел бы получить такой список:

  • "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) } 
    
+0

Пожалуйста, отредактируйте ваш вопрос и покажите нам, что вы уже пробовали, почему это не сработало, что вы пытались смягчить, и вообще, где именно вы застряли. –

ответ

5

Вы можете использовать String#scan с блоком:

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

Выход:

Azzzazazaaaazzzazaaaazz 
aaaazzzazazAzzzazaaaazz 
aaaazzzazazaaaazzzazAzz 

$` и $' являются global variables, ссылаясь на строки влево и вправо от последнего матча.

Смежные вопросы