在字符串的美元符号字符

Tra*_*vis 27 string templates kotlin

$在字符串文字中添加字符的最简洁方法是什么?

到目前为止我提出的最佳解决方案是"""${"$"}...""",对我来说看起来很难看.

Ale*_*lov 29

要在字符串文字中转义美元符号,请使用反斜杠字符:

"\$"
Run Code Online (Sandbox Code Playgroud)

要在原始字符串文字("""...""")中转义它,您提供的解决方法确实是目前最简单的解决方案.错误跟踪器中存在一个问题,您可以为其注明和/或投票:KT-2425.


koj*_*ow7 8

看起来您没有正确粘贴代码,因为您只有 3 个双引号。

无论如何,最好的方法是按如下方式转义美元符号:

"\$"
Run Code Online (Sandbox Code Playgroud)

  • 你无法在原始字符串中转义,我相信这就是问题的目的。 (4认同)
  • @JaysonMinard 不,你不能在原始字符串中做到这一点,请阅读这个问题。 (2认同)

Jay*_*ard 5

在当前的 Kotlin 1.0(和测试版)中,您可以使用反斜杠进行转义"\$"

这个通过的单元测试证明了以下情况:

@Test public fun testDollar() {
    val dollar = '$'

    val x1 = "\$100.00"
    val x2 = "${"$"}100.00"
    val x3 = """${"$"}100.00"""
    val x4 = "${dollar}100.00"
    val x5 = """${dollar}100.00"""

    assertEquals(x5, x1)
    assertEquals(x5, x2)
    assertEquals(x5, x3)
    assertEquals(x5, x4)

    // you cannot backslash escape in """ strings, therefore:

    val odd = """\$100.00""" // creates "\$100.00" instead of "$100.00"
    // assertEquals(x5, odd) would fail
}
Run Code Online (Sandbox Code Playgroud)

"$100.00"除了最后一个奇怪的情况外,所有版本都会生成一个字符串。

  • “最后一个奇怪的案例”正是 OP 所要求的。 (4认同)