我在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)
如何解决此问题?
答案 0 :(得分:1)
尝试转义$符号:
val map = Map[String, String]("a" -> "\\$bp")