Формат Строка Котлина с несколькими вхождениями

У меня есть шаблон String, выглядящий вот так:

val template = "Something %s something else %s. The first was %1$s, the second was %2$s" 

отлично работает с Java. Как использовать эти повторяющиеся значения String с Kotlin? Похоже, что %1$s невозможно.

Предупреждение компилятора: unresolved reference: s

Строковые литералы в Котлине способны к строковой интерполяции, а знак доллара – это начало выражения шаблона строки . Если вам нужен буквальный знак доллара в строке вместо этого, вы должны избежать этого, используя обратную косую черту: \$ . Таким образом, ваш шаблон (который, я предполагаю, вы переходите к String.format ), становится:

 val template = "Something %s something else %s. The first was %1\$s, the second was %2\$s" 

Как сказал ответ Александра Удалова , $ можно использовать для String Templates .

Помимо использования обратной косой черты для выхода из char $ , вы также можете использовать ${'$'} чтобы избежать этого. Этот синтаксис будет более полезен, если вы хотите избежать $ в необработанной строке, где escape-обратное сбрасывание не поддерживается.

 val template = "Something %s something else %s. The first was %1${'$'}s, the second was %2${'$'}s" 
  • Как я могу разбить String на массив в Kotlin?
  • Kotlin - Как правильно конкатенировать строку
  • Как проверить, отсортирован ли массив строк в алфавитном порядке или нет с помощью Kotlin?
  • Kotlin - Несоответствие типа: Обязательно: String, Найдено: () -> String
  • Давайте будем гением компьютера.