Kotlin - 如何正确拼接字符串

131

一个非常基本的问题,Kotlin中连接字符串的正确方法是什么?

在Java中,您可以使用concat()方法,例如:

String a = "Hello ";
String b = a.concat("World"); // b = Hello World

concat()函数在Kotlin中不可用。我应该使用加号+吗?

返回:

concat()函数在Kotlin中不可用。我应该使用加号+吗?

15个回答

2
如果您有一个对象,并且想要连接对象的两个值,例如:
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}"

1

如果您有一个有限且预定义的值集,则最有效和可读的方法是使用字符串模板(它使用字符串构建器执行连接)。

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 方法。


1

yourString += "newString"

这样你就可以连接一个字符串了


1
在 Kotlin 中,我们可以使用 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}" }

结果是:

#你好-#再见


0

使用加法赋值(+=)运算符

表达式 等价 翻译
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接