快速等效于%@的科特林

问题描述 投票:1回答:3

我是科特林的新手。我可以迅速做:

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

字符串的最终输出将是:Categories / 4 / issues /作为字符串。

[我看过Kotlin中的字符串格式,但此后才起作用,这意味着我无法为我的字符串定义模板并在以后填充它。

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

这给了我相同的结果,但是这意味着我必须手动编写字符串的结尾。

我想做的事是在Road文件中为我的字符串提供模板。然后在运行时完成我的字符串。问题是我要完成的字符串部分在字符串的中间。当然,我可以使用子字符串和替换,但是我正在寻找一种干净的方法来做到这一点。

感谢您的帮助。

swift string kotlin string-formatting
3个回答
1
投票

您可以使用所有常量部分预先创建格式字符串,然后在以后的参数中使用常规Java String.format()

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

// and then later:
val categoryId = 4
println(String.format(format, categoryId))

3
投票

一个可能的选择是定义一个执行格式化的局部函数:

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

val finalString = requestString(4)

0
投票

您已经在示例中找到答案,只需将其放在一起即可。String.format将%s用作字符串的占位符,或将%d用作数字(以及many more占位符选项)。

因此您的模板字符串为:"categories/%d/issues/"。要格式化它,请使用:

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

关于插值与格式,它们可以在不同的情况下使用。如果您在源代码中有可用的模板字符串,则可以使用插值:

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

但是如果您无法控制字符串,因为它来自外部来源(例如文件),那么您将不得不使用格式。

© www.soinside.com 2019 - 2024. All rights reserved.