Kotlin эквивалент% @ в быстром - PullRequest
1 голос
/ 17 февраля 2020

Я новичок в kotlin. В быстром я могу сделать:

let endpoint = "categories/" + "%@/issues/"
let number = "4"
let finalstring = String(format: endpoint, number)

Окончательный вывод строки будет: категории / 4 / проблемы / в виде строки.

Я посмотрел на формат строки в kotlin но потом это работает, а это означает, что я не могу определить шаблон для моей строки и заполнить его позже.

var value1 = "categories/"
var value2 = 4
var value3 = "/issues/"
println(java.lang.String.format("%s%d%s", value1, value2, value3))

Это дает мне тот же результат, но это значит, что мне нужно вручную написать конец string.

Что я хочу сделать, чтобы у меня был шаблон для моей строки в файле Road. Затем завершите мою строку во время выполнения. Проблема в том, что часть моей строки, которую я хочу завершить, находится в середине строки. Конечно, я могу использовать подстроку и перестановку, но я ищу чистый способ сделать это, как в swift.

Спасибо за помощь.

Ответы [ 3 ]

4 голосов
/ 17 февраля 2020

Один из возможных вариантов - определить локальную функцию, которая выполняет форматирование:

fun requestString(number: Int) = "categories/$number/issues/"

val finalString = requestString(4)
1 голос
/ 17 февраля 2020

Вы можете создать строку формата заранее со всеми постоянными частями и с соответствующими заполнителями (например, %d для чисел) (подробнее см. javado c).

Позже, используйте обычный Java String.format() позже с параметрами:

// define this constant up front
val format = "categories/%d/issues/"

// and then later:
val categoryId = 4
println(String.format(format, categoryId))
0 голосов
/ 17 февраля 2020

У вас уже есть ответ прямо в вашем примере, вам просто нужно соединить его.
String.format принимает %s в качестве заполнителя для строки или %d для числа (и много больше вариантов заполнителя).

Итак, ваша строка шаблона будет: "categories/%d/issues/". Для его форматирования вы используете:

val format = "categories/%d/issues/"
val number = 4
val string = String.format(format, number)

Что касается интерполяции и форматирования, их можно использовать в различных ситуациях.
Если у вас есть строка шаблона, доступная в исходном коде, вы должны использовать интерполяцию:

val string = "categories/${category.id}/issues/" 

Но если у вас нет контроля над строкой, поскольку она исходит из внешнего источника (например, файла), вам придется использовать форматирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...