0

根据文档,您可以引用<object.property>格式中对象的属性。我希望这能让我检查字符串的长度,但它似乎不起作用。我认为这是因为该方法是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 "

因此,如果 Strings 有一个getLength()方法或一个length字段,它就会起作用......

有没有更简单的方法来获取字符串长度?也许是内置的 StringTemplate 函数,或者我不知道的其他方法?

4

1 回答 1

0

我在Cheatsheet 的 Functions 列表中找到了答案:strlen

scala> new ST("<xs:{ x | <x>:<strlen(x)> }>").add("xs", List("hello", "goodbye").asJava).render
res6: String = "hello:5 goodbye:7 "
于 2013-03-08T21:45:41.717 回答