使用`String#[]`和regex对字符串进行全局替换

时间:2014-04-04 04:42:26

标签: ruby regex replace

我有以下内容:

test = "abcd abed abef"
test[/ab.d/] = 'Toast'
# => "Toast abed abef"

是否有一个修饰符或者我可以使用这种语法来使替换全局化,结果是:

"Toast Toast abef"

更新

只是为了澄清,这只是为了学习而进行的智力练习。我认识到还有其他(更有效的)做事方式。我大多只是好奇。 :)

2 个答案:

答案 0 :(得分:3)

你可以试试这个:

test.gsub(/ab.d/, 'Toast')

这将匹配正则表达式的单词g(global) sub(substitution)

答案 1 :(得分:1)

我没有看到为此目的使用String#[]的任何意义;我只能想到一种效率低于使用String#gsub的方法。但鉴于替换不会创建新的匹配位置,这是一种方法:

test = "abcd abed abef"
test[/ab.d/] = 'Toast' while test[/ab.d/]
test # => "Toast Toast abef"