Scala中使用`replaceAllIn`方法的字符串替换问题

时间:2016-06-06 15:01:39

标签: string scala templates replace

我在Better String formatting in Scala

的Scala中有这个模板格式代码
  def getTemplateString(template:String, replacement:Map[String, String]) = {
    replacement.foldLeft(template)((s:String, x:(String,String)) => ( "#\\{" + x._1 + "\\}" ).r.replaceAllIn( s, x._2 ))
  }

问题是如果使用带有'$'字符的映射值,则会出现Illegal group reference java.lang.IllegalArgumentException: Illegal group reference错误。

val template = "#{a}"
val map = Map[String, String]("a" -> "$bp")
val res = getTemplateString(template, map)
println(res)

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

尝试转义$符号:

val map = Map[String, String]("a" -> "\\$bp")