Что является самым чистым методом для добавления символа $
в строковый литерал?Знак знака доллара в строках
Лучшее решение, которое я придумал до сих пор, это """${"$"}..."""
, который выглядит уродливым для меня.
Что является самым чистым методом для добавления символа $
в строковый литерал?Знак знака доллара в строках
Лучшее решение, которое я придумал до сих пор, это """${"$"}..."""
, который выглядит уродливым для меня.
Чтобы избежать знак доллара внутри строкового литерала, используйте символ обратной косой черты:
"\$"
Чтобы избежать этого в raw строка литерала ("""..."""
), обходной путь, который вы предоставили, на самом деле является самым простым решением на данный момент. В трекере ошибок есть проблема, которую вы можете сыграть и/или проголосовать за: KT-2425.
Не похоже, чтобы вы правильно вставили свой код, поскольку у вас есть только три двойных кавычки.
Во всяком случае, лучший способ сделать это, чтобы просто избежать знак доллара следующим образом:
"\$"
Вы не можете убежать внутри необработанной строки, которая, я считаю, является целью вопроса. – jkschneider
@jkschneider вы можете в текущем Kotlin, вопрос и ваш комментарий устарели для текущего состояния Kotlin. Этот ответ правильный. –
@JaysonMinard нет, вы не можете сделать это в необработанной строке, пожалуйста, прочитайте эту проблему. –
В текущем Котлин 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"
за исключением один нечетный случай в конце.
«Один странный случай в конце» - это именно то, о чем спрашивал ОП. –
ну, теперь все опции видны ;-) –
Эта проблема в YouTrack (KT-2425) отмечена как 'open', но на самом деле это больше не существует как проблема, см. Другой ответ ниже. –
Ничего не изменилось в связи с этой проблемой: значки доллара могут (и могли быть) сбрасываться с обратной косой чертой в обычных строках, но не могут внутри строк строковых литералов ('" "" ... "" "'). Однако мой ответ касался только последнего, не знаю, почему, я исправлю это. –
А теперь ясно. –