文字列リテラルに$
文字を追加する最もクリーンな方法は何ですか?
これまでに思いついた最善の解決策は"""${"$"}..."""
で、これは醜く見えます。
文字列リテラル内のドル記号をエスケープするには、円記号を使用します。
"\$"
raw文字列リテラル("""..."""
)、提供した回避策は、現時点で確かに最も簡単な解決策です。バグトラッカーに問題があります。スターを付けたり、投票したりできます: KT-2425 。
二重引用符が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"
が作成されます。