一个非常基本的问题,在Kotlin中连接字符串的正确方法是什么?
在Java中,您将使用该concat()
方法,例如
String a = "Hello ";
String b = a.concat("World"); // b = Hello World
该concat()
功能不适用于Kotlin。我应该使用+
标志吗?
一个非常基本的问题,在Kotlin中连接字符串的正确方法是什么?
在Java中,您将使用该concat()
方法,例如
String a = "Hello ";
String b = a.concat("World"); // b = Hello World
该concat()
功能不适用于Kotlin。我应该使用+
标志吗?
Answers:
在Kotlin中,您可以使用字符串插值/模板进行连接:
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
"Hello" + "Word"
与使用StringBuilder附加到字符串的性能一样someHelloStringBuilder.append("World")
?
kotlin.String
有一个plus
方法:
a.plus(b)
有关详细信息,请参见https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/plus.html。
+
操作是正常的,不调用转换操作符函数plus
......这不是成语
a = a.plus(b)
例如
plus()
其实用性不如StringBuilder
的append方法。
我同意上面接受的答案,但这仅适用于已知的字符串值。对于动态字符串值,这是我的建议。
// A list may come from an API JSON like
{
"names": [
"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
这对于用分隔符连接字符串列表很有用。
类似于@Rhusfer的答案,我这样写。如果您有一组EditText
s并想要连接它们的值,则可以编写:
listOf(edit_1, edit_2, edit_3, edit_4).joinToString(separator = "") { it.text.toString() }
如果要连接HashMap
,请使用以下命令:
map.entries.joinToString(separator = ", ")
// Result:
// id=123, name=John, surname=Smith
试试这个,我认为这是在Kotlin中连接字符串的一种本地方法:
val result = buildString{
append("a")
append("b")
}
println(result)
// you will see "ab" in console.
buildString {
代替了stringBuild {
在kotlin示例中,可以使用多种方法来连接字符串-
a = "Hello" , b= "World"
使用+运算符
a+b
使用plus()
运算符
a.plus(b)
注意-+仅在内部转换为.plus()方法
在上述两种方法中,由于字符串是不可变的,因此会创建一个新的字符串对象。如果要修改现有字符串,可以使用StringBuilder
StringBuilder str = StringBuilder("Hello").append("World")
a.plus(b)
或,a + b
并且生成相同的字节码