我有一个字符串模板,如下所示:
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
答案 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}}之外,您还可以使用$
来转义它。当您想要转义原始字符串中的${'$'}
时,此语法将更有用,其中不支持反斜杠转义。
$