获取StringTemplate中String值的长度

时间:2013-03-06 23:06:51

标签: stringtemplate stringtemplate-4

According to the documentation您可以引用<object.property>格式的对象属性。我希望这会让我检查一下String的长度,但它似乎不起作用。我认为这是因为该方法是String.length(),根据文档,如果我执行类似<mystr.length>的操作,它将查找名为getLength()的方法和名为length的字段,但它从不寻找名为length()的方法。我通过Scala REPL中的快速检查验证了:

scala> import org.stringtemplate.v4._; import scala.collection.JavaConverters._;
import org.stringtemplate.v4._
import scala.collection.JavaConverters._

scala> new ST("<xs:{ x | <x>:<x.length> }>").add("xs", List("hello", "goodbye").asJava).render
res0: String = "hello: goodbye: "

scala> case class S(val s:String) { def getLength = s.length }
defined class S

scala> new ST("<xs:{ x | <x>:<x.length> }>").add("xs", List("hello", "goodbye").map(S).asJava).render
res1: String = "S(hello):5 S(goodbye):7 "

因此,如果字符串有getLength()方法或length字段,那么它会起作用......

是否有更简单的方法来获取String长度?也许是一个内置的StringTemplate函数,或者其他一些我不知道的方法?

1 个答案:

答案 0 :(得分:0)

我在Cheatsheet's list of Functionsstrlen

中找到了答案
scala> new ST("<xs:{ x | <x>:<strlen(x)> }>").add("xs", List("hello", "goodbye").asJava).render
res6: String = "hello:5 goodbye:7 "