格式化多次出现的Kotlin字符串

时间:2015-11-08 11:03:36

标签: string kotlin

我有一个字符串模板,如下所示:

val template = "Something %s something else %s. The first was %1$s, the second was  %2$s"

适用于Java。如何在Kotlin中使用此重复出现的String值? 看起来%1$s是不可能的。

编译器警告:unresolved reference: s

2 个答案:

答案 0 :(得分:3)

Kotlin中的字符串文字能够进行字符串插值,而美元符号是string template expression的开头。如果您需要字符串中的文字美元符号,则应使用反斜杠转义它:\$。因此,您的模板(我假设您传递给String.format)变为:

val template = "Something %s something else %s. The first was %1\$s, the second was %2\$s"

答案 1 :(得分:1)

正如Alexander Udalov's answer所述,$可以用于String Templates

除了使用反斜杠转义char [{1}}之外,您还可以使用$来转义它。当您想要转义原始字符串中的${'$'}时,此语法将更有用,其中不支持反斜杠转义。

$