是否有一个gsub替代ruby可以在每次匹配时运行一个方法?

时间:2012-04-03 15:44:58

标签: ruby regex gsub

我需要运行一个脚本来重写html文件的文件夹路径,会有很多匹配,需要计算替换字符串,比如

"Html string".gsub( /images/([a-zA-Z0-9\-]+)/, "/images/#{replacement_method($1)}/" )

唯一的问题是gsub,至少据我所知,只运行一次replacement_method(),我需要它每次运行,因为文件夹字符串发生了所需的替换字符串更改。

有没有办法让这个工作与gsub?喜欢wordpress中的替换功能? 还有其他任何现实的方法吗?

1 个答案:

答案 0 :(得分:11)

你必须使用一个块:

"Html string".gsub( /images/(folder)/) { |match| "/images/#{replacement_method(match)}/" }

将为字符串中的每个匹配调用该块。