开发者

Scala string template

Is there default(in SDK) scala support for string templat开发者_Python百科ing? Example: "$firstName $lastName"(named not numbered parameters) or even constructs like for/if. If there is no such default engine, what is the best scala library to accomplish this.


If you want a templating engine, I suggest you have a look at scalate. If you just need string interpolation, "%s %s".format(firstName, lastName) is your friend.


Complementing Kim's answer, note that Java's Formatter accepts positional parameters. For example:

"%2$s %1$s".format(firstName, lastName)

Also, there's the Enhanced Strings plugin, which allows one to embed arbitrary expressions on Strings. For example:

@EnhanceStrings // enhance strings in this scope
trait Example1 {
  val x = 5
  val str = "Inner string arithmetics: #{{ x * x + 12 }}"
}

See also this question for more answers, as this is really a close duplicate.


In Scala 2.10 and up, you can use string interpolation

val name = "James"
println(s"Hello, $name")  // Hello, James

val height = 1.9d
println(f"$name%s is $height%2.2f meters tall")  // James is 1.90 meters tall


This compiler plug-in has provided string interpolation for a while:

http://jrudolph.github.com/scala-enhanced-strings/Overview.scala.html

More recently, the feature seems to be making it into the scala trunk: https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk/test/files/run/stringInterpolation.scala -- which generates some interesting possiblities: https://gist.github.com/a69d8ffbfe9f42e65fbf (not sure if these were possible with the plug-in; I doubt it).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜