Scala

jsのreplace関数みたいに高階関数渡す感じのreplace処理をScalaで模索

jsのコレっぽく

js
function replace(str) {
  var dic = { "&amp;" : "&", "&lt;" : "<", "&gt;" : ">" }
  return str.replace(/&lt;|&gt;|&amp;/g, s => dic[s])
}

Scalaでも書けないかな?とおもって模索したらそれっぽいかんじで出来たのでメモ。

scala
def replace(str: String) = {
  val dic = Map("&amp;" -> "&", "&lt;" -> "<", "&gt;" -> ">")
  dic.keys.mkString("|").r.replaceAllIn(str, m => dic(m.matched))
}