一个非常基本的问题,在Kotlin中连接String的正确方法是什么?
在Java中,您将使用concat()
方法,例如
String a = "Hello ";
String b = a.concat("World"); // b = Hello World
虽然Kotlin无法使用concat()
功能。我应该使用+
标志吗?
答案 0 :(得分:101)
在Kotlin中,您可以使用string interpolation / templates连接:
val a = "Hello"
val b = "World"
val c = "$a $b"
输出结果为:Hello World
或者您可以使用+
/ plus()
运算符进行连接:
val a = "Hello"
val b = "World"
val c = a + b // same as calling operator function a.plus(b)
print(c)
输出结果为:HelloWorld
或者您可以使用StringBuilder
连接。
val a = "Hello"
val b = "World"
val sb = StringBuilder()
sb.append(a).append(b)
val c = sb.toString()
print(c)
输出结果为:HelloWorld
答案 1 :(得分:11)
kotlin.String
有plus
方法:
a.plus(b)
有关详细信息,请参阅https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/plus.html。
答案 2 :(得分:6)
是的,您可以使用+
符号进行连接。 Kotlin有字符串模板,因此最好使用它们:
var fn = "Hello"
var ln = "World"
"$fn $ln"
用于连接。
您甚至可以使用String.plus()
方法。
答案 3 :(得分:6)
我同意上面接受的答案,但这仅适用于已知的字符串值。 对于动态字符串值,这是我的建议。
// A list may come from an API JSON like
{
"persons": {
"Person 1",
"Person 2",
"Person 3",
...
"Person N"
}
}
var listOfNames = mutableListOf<String>()
val stringOfNames = listOfNames.joinToString(", ")
// ", " <- a separator for the strings, could be any string that you want
// Posible result
// Person 1, Person 2, Person 3, ..., Person N
这对于用分隔符连接字符串列表很有用。
答案 4 :(得分:2)
类似于@Rhusfer的答案,我写了这个。如果您有一组EditText
并想连接它们的值,则可以编写:
listOf(edit_1, edit_2, edit_3, edit_4).joinToString(separator = "") { it.text.toString() }
答案 5 :(得分:1)
在Kotlin中有多种连接字符串的方法 示例-
a = "Hello" , b= "World"
使用+运算符
a+b
使用plus()
运算符
a.plus(b)
注意-+仅在内部转换为.plus()方法
在上述两种方法中,由于字符串是不可变的,因此会创建一个新的字符串对象。如果要修改现有字符串,可以使用StringBuilder
StringBuilder str = StringBuilder("Hello").append("World")
答案 6 :(得分:1)
尝试一下,我认为这是在Kotlin中连接字符串的一种天然方法:
val result = stringBuild{
append("a")
append("b")
}
println(result)
// you will see "ab" in console.
答案 7 :(得分: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
我认为这篇文章中的一些建议解决方案效率不高。就像使用 plus 或 + 或为有限的一组 entris 创建一个集合,然后对它们应用 joinToString。
答案 8 :(得分:0)
yourString + =“ newString”
这样,您可以连接字符串
答案 9 :(得分:0)
在 Kotlin 中,我们可以使用 joinToString()
val tags=arrayOf("hi","bye")
val finalString=tags.joinToString (separator = ","){ "#$it" }
结果是:
<块引用>#嗨,#再见
如果列表来自服务器
var tags = mutableListOf<Tags>() // list from server
val finalString=tags.joinToString (separator = "-"){ "#${it.tagname}" }
结果是:
<块引用>#hi-#bye
答案 10 :(得分:0)
如果你有一个对象并且想要连接一个对象的两个值,比如
data class Person(
val firstName: String,
val lastName: String
)
那么简单地跟随是行不通的
val c = "$person.firstName $person.lastName"
在这种情况下正确的方法是
"${person.firstName} ${person.lastName}"
如果你想要在连接值之间的任何字符串,只需写在那里没有任何帮助符号。例如,如果我想要“名称是”,然后在名字和姓氏之间添加一个连字符
"Name is ${person.firstName}-${person.lastName}"