【问题标题】:Dollar Sign Character in Strings字符串中的美元符号字符
【发布时间】:2015-08-21 19:58:20
【问题描述】:

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

目前为止我想出的最佳解决方案是"""${"$"}...""",我觉得它很难看。

【问题讨论】:

    标签: string templates kotlin


    【解决方案1】:

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

    "\$"
    

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

    【讨论】:

      【解决方案2】:

      您似乎没有正确粘贴代码,因为您只有 3 个双引号。

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

      "\$"
      

      【讨论】:

      • 你不能在原始字符串中转义,我相信这是问题的目的。
      • @jkschneider 你可以在当前的 Kotlin 中,问题和你的评论对于 Kotlin 的当前状态来说已经过时了。这个答案是正确的。
      • @JaysonMinard 不,你不能在原始字符串中这样做,请阅读问题。
      • @AlexanderUdalov 是的,我凌晨 4 点的大脑功能出现问题
      【解决方案3】:

      在当前的 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
      }
      

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

      【讨论】:

      • “最后的一个奇怪案例”正是 OP 所要求的。
      • 好吧,现在所有选项都可见了 ;-)
      【解决方案4】:

      要在多行字符串中显示文字美元符号,您可以执行以下操作

      我为我的罪感到抱歉:

      val nonInterpedValue = "\${someTemplate}"
      val multiLineWithNoninterp = """
              Hello
              $nonInterpedValue
              World
      """.trimIndent()
      

      正如在其他地方提到的,这是解决方法,因为现在您不能在多行字符串中使用美元符号。 https://youtrack.jetbrains.com/issue/KT-2425

      (我需要这个来让 Groovy 的模板引擎工作:https://www.baeldung.com/groovy-template-engines

      【讨论】:

        【解决方案5】:

        对于 Kotlin 开发人员。

        我想做的是:

        val $name : String
        

        如果你也是这种情况,请使用:

        val `$name` : String
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-25
          • 2013-05-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多