我可以在kotlin中的模板表达式或lambda表达式中转换字符串吗?
val tm = "x = $"+"x"
val fn: (x: String) -> String = { it -> tm}
val str = fn("This is X!!!")
需要获得
x =这是X !!!
为什么?:您可以从数据库接收模板 PS:或你的建议
答案 0 :(得分:2)
Kotlin模板在编译时进行评估 - 所以这不会起作用。
您应该使用第三方模板引擎。
Freemarker就是这样一个引擎,其格式与Kotlin自己的模板格式非常相似:
val tm = "x = \${x}"
fun fn (x: String) : String {
val t = Template("name", StringReader(tm), Configuration(Configuration.VERSION_2_3_26))
val out = StringWriter()
t.process(mapOf("x" to x) ,out)
return out.toString()
}
println (fn("This is X!!!")) // x = This is X!!!
两个注释:
"$x"
,只有"${x}"
$
符号可以使用\$