web-dev-qa-db-ja.com

文字列内のドル記号文字

文字列リテラルに$文字を追加する最もクリーンな方法は何ですか?

これまでに思いついた最善の解決策は"""${"$"}..."""で、これは醜く見えます。

30
Travis

文字列リテラル内のドル記号をエスケープするには、円記号を使用します。

"\$"

raw文字列リテラル("""...""")、提供した回避策は、現時点で確かに最も簡単な解決策です。バグトラッカーに問題があります。スターを付けたり、投票したりできます: KT-2425

24

二重引用符が3つしかないため、コードを正しく貼り付けていないようです。

とにかく、これを行う最良の方法は、次のようにドル記号をエスケープすることです。

"\$"
3
kojow7

現在の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"が作成されます。

2
Jayson Minard