Есть ли альтернатива gsub для ruby, которая может запускать метод при каждом совпадении? - PullRequest
3 голосов
/ 03 апреля 2012

Мне нужно запустить скрипт, который перезапишет путь к папке HTML-файла, будет много совпадений, и нужно будет заменить строку замены, что-то вроде

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

Единственная проблема - gsubПо крайней мере, насколько мне известно, я буду запускать replace_method () только один раз, и мне нужно, чтобы он запускался каждый раз, когда требуемые изменения строки замены происходят в строке папки.

Есть ли способ заставить эту работу работать?с gsub?что-то вроде функции замены в WordPress?Любые другие реалистичные подходы?

1 Ответ

11 голосов
/ 03 апреля 2012

Вы должны использовать блок:

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

Блок будет вызываться для каждого совпадения в строке.

...