Scala регулярное выражение заменить на анонимную функцию - PullRequest
11 голосов
/ 15 апреля 2011

В Ruby я могу заменить символы в строке следующим образом:

a = "one1two2three"
a.gsub(/\d+/) {|e| e.to_i + 1}
=> "one2two3three"

Результат вычисления блока из второй строки заменит то, что было найдено в шаблоне. Можем ли мы сделать что-то эквивалентное в Scala? Заменить что-нибудь в регулярном выражении результатами функции / анонимной функции?

1 Ответ

23 голосов
/ 15 апреля 2011

Да, Regex#replaceAllIn имеет перегруженную версию, которая принимает функцию Match => String.Эквивалентная версия вашего кода для Scala:

"""\d+""".r.replaceAllIn("one1two2three", m => (m.group(0).toInt + 1).toString)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...