如何在 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/