一个非常基本的问题,Kotlin中连接字符串的正确方法是什么?
在Java中,您可以使用concat()
方法,例如:
String a = "Hello ";
String b = a.concat("World"); // b = Hello World
concat()
函数在Kotlin中不可用。我应该使用加号+
吗?
concat()
函数在Kotlin中不可用。我应该使用加号+
吗?
data class Person(
val firstName: String,
val lastName: String
)
val c = "$person.firstName $person.lastName"
"${person.firstName} ${person.lastName}"
如果你想在连接的值之间添加任何字符串,只需直接写入即可,不需要使用任何辅助符号。例如,如果我想要 "Name is " 和姓和名字之间有一个连字符,则可以这样写:
"Name is ${person.firstName}-${person.lastName}"
如果您有一个有限且预定义的值集,则最有效和可读的方法是使用字符串模板(它使用字符串构建器执行连接)。
val a = "Hello"
val b = "World"
val c = "$a ${b.toUpperCase()} !"
println(c) //prints: Hello WORLD !
另一方面,如果你有一个值的集合,那么使用 joinToString 方法。
val res = (1..100).joinToString(",")
println(res) //prints: 1,2,3,...,100
我认为此帖子中的一些建议解决方案并不高效。比如使用加号或者创建一个有限条目集合,然后在它们上面应用 joinToString 方法。
yourString += "newString"
这样你就可以连接一个字符串了
joinToString()
函数来连接字符串数组。val tags=arrayOf("hi","bye")
val finalString=tags.joinToString (separator = ","){ "#$it" }
结果是:
#hi,#bye
如果列表来自服务器
var tags = mutableListOf<Tags>() // list from server
val finalString=tags.joinToString (separator = "-"){ "#${it.tagname}" }
结果是:
#你好-#再见
使用加法赋值(+=)运算符:
表达式 | 等价 | 翻译 |
---|---|---|
a +=b | a = a + b | a.plusAssign(b) |
基本用法:
var message = "My message"
message += ", add message 2"
将输出:我的消息,添加消息2
通用函数,单词之间可选空格:
fun concat(vararg words: String, space: Boolean = false): String {
var message = ""
words.forEach { word -> message += word + if (space) " " else "" }
return message
}
fun concat(vararg words: String, separator: String = ""): String {
return string.joinToString(separator)
}
调用通用函数:
concat("one", "two", "three", "four", "five")
concat("one", "two", "three", "four", "five", space = true)
输出:
onetwothreefourfive
one two three four five