2011-04-15 23 views
9

在Ruby中,我可以通過以下方式替換字符串中的字符:Scala的正則表達式與匿名函數替換

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

評估從第二行塊的結果,將取代什麼模式被匹配。我們可以在Scala中做相同的事情嗎?將正則表達式中的某些內容替換爲函數/匿名函數的結果?

回答

19

是,Regex#replaceAllIn有一個重載的版本,需要一個功能Match => String。您的代碼的等效Scala版本將爲:

"""\d+""".r.replaceAllIn("one1two2three", m => (m.group(0).toInt + 1).toString) 
+0

非常棒!謝謝! – Geo 2011-04-15 11:27:25