Scala - 运行时字符串模板

时间:2016-10-09 16:14:01

标签: java string scala st

我想完全按照Java的字符串模板执行操作,但是在scala中。但是,该库不适用于案例类:

case class Obj(str:String)
val st = new ST("xx $obj.str$ xx",'$','$')
st.add("obj",Obj("replacement"))
st.render()  //returns "xx  xx"

ST试图寻找财产" str"使用反射,但它只适用于scala。

如果没有ST,我怎样才能实现?

2 个答案:

答案 0 :(得分:0)

尝试创建这样的类:

    case class Obj(@BeanProperty str: String)

以下是scala doc:http://www.scala-lang.org/api/current/#scala.beans.BeanProperty

您还可以查看Scalasti项目,它是StringTemplate的接口:http://software.clapper.org/scalasti/

答案 1 :(得分:-1)

它内置于语言中(以可扩展的方式)。只是

val obj = Obj("replacement")
s"xx ${obj.str} xx"

您可以在${...}内添加任何Scala表达式。

有关详情,请参阅http://docs.scala-lang.org/overviews/core/string-interpolation.html(或只搜索“Scala字符串插值”)。