Kotlin - How to correctly concatenate a String
一个非常基本的问题,在Kotlin中连接字符串的正确方法是什么?
在Java中,您将使用
1 2 | String a ="Hello"; String b = a.concat("World"); // b = Hello World |
字符串模板/插值
在Kotlin中,可以使用字符串插值/模板进行连接:
1 2 3 | val a ="Hello" val b ="World" val c ="$a $b" |
输出将是:
-
编译器将
StringBuilder 用于String模板,这是内存方面最有效的方法,因为+ /plus() 会创建新的String对象。
或者您可以显式使用
1 2 3 4 5 6 7 8 | val a ="Hello" val b ="World" val sb = StringBuilder() sb.append(a).append(b) val c = sb.toString() print(c) |
输出将是:
新的字符串对象
或者您可以使用
1 2 3 4 5 | val a ="Hello" val b ="World" val c = a + b // same as calling operator function a.plus(b) print(c) |
输出将是:
- 这将创建一个新的String对象。
1 | a.plus(b) |
有关详细信息,请参见https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/plus.html。
我同意上面接受的答案,但这仅适用于已知的字符串值。
对于动态字符串值,这是我的建议。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // 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 |
这对于用分隔符连接字符串列表很有用。
是的,您可以使用
1 2 | var fn ="Hello" var ln ="World" |
您甚至可以使用
尝试一下,我认为这是在Kotlin中连接字符串的一种天然方法:
1 2 3 4 5 6 7 8 | val result = buildString{ append("a") append("b") } println(result) // you will see"ab" in console. |
类似于@Rhusfer的答案,我写了这个。如果您有一组
1 | listOf(edit_1, edit_2, edit_3, edit_4).joinToString(separator ="") { it.text.toString() } |
如果要连接
1 | map.entries.joinToString(separator =",") |
要连接
1 | bundle.keySet().joinToString(",") { key ->"$key=${bundle[key]}" } |
它按字母顺序对键进行排序。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | val map: MutableMap<String, Any> = mutableMapOf("price" to 20.5) map +="arrange" to 0 map +="title" to"Night cream" println(map.entries.joinToString(separator =",")) // price=20.5, arrange=0, title=Night cream val bundle = bundleOf("price" to 20.5) bundle.putAll(bundleOf("arrange" to 0)) bundle.putAll(bundleOf("title" to"Night cream")) val bundleString = bundle.keySet().joinToString(",") { key ->"$key=${bundle[key]}" } println(bundleString) // arrange=0, price=20.5, title=Night cream |
在Kotlin中有多种连接字符串的方法
示例-
1 | a ="Hello" , b="World" |
使用运算符
使用
注意-仅在内部转换为.plus()方法
在上述2种方法中,由于字符串是不可变的,因此会创建一个新的字符串对象。如果要修改现有的字符串,可以使用StringBuilder
1 | StringBuilder str = StringBuilder("Hello").append("World") |
yourString =" newString"
这样,您可以连接字符串