Pertanyaan yang sangat mendasar, apa cara yang tepat untuk menggabungkan String di Kotlin?
Di Java, Anda akan menggunakan concat()
metode ini, misalnya
String a = "Hello ";
String b = a.concat("World"); // b = Hello World
Namun, concat()
fungsinya tidak tersedia untuk Kotlin. Haruskah saya menggunakan +
tanda itu?
a.plus(b)
ataua + b
dan bytecode yang sama dihasilkan"Hello" + "Word"
sama performanya dengan menggunakan StringBuilder untuk menambahkan stringsomeHelloStringBuilder.append("World")
,?kotlin.String
memilikiplus
metode:Lihat https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/plus.html untuk detailnya.
sumber
+
operator adalah normal, tidak memanggil fungsi operator diterjemahkanplus
... ini bukan idiomatika = a.plus(b)
misalnyaplus()
kurang praktis daripadaStringBuilder
metode append yaitu.Saya setuju dengan jawaban yang diterima di atas tetapi ini hanya bagus untuk nilai string yang diketahui. Untuk nilai string dinamis, inilah saran saya.
// 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
Ini berguna untuk menggabungkan daftar string dengan pemisah.
sumber
Ya, Anda dapat menggabungkan menggunakan
+
tanda. Kotlin memiliki template string, jadi lebih baik menggunakannya seperti:var fn = "Hello" var ln = "World"
"$fn $ln"
untuk penggabungan.Anda bahkan dapat menggunakan
String.plus()
metode.sumber
+
operator adalah normal, tidak memanggil fungsi operator diterjemahkanplus
... ini bukan idiomatikCoba ini, saya pikir ini adalah cara asli untuk menggabungkan string di Kotlin:
val result = buildString{ append("a") append("b") } println(result) // you will see "ab" in console.
sumber
buildString {
bukanstringBuild {
Mirip dengan jawaban @Rhusfer, saya menulis ini. Jika Anda memiliki sekelompok
EditText
s dan ingin menggabungkan nilainya, Anda dapat menulis:listOf(edit_1, edit_2, edit_3, edit_4).joinToString(separator = "") { it.text.toString() }
Jika Anda ingin menggabungkan
Map
, gunakan ini:map.entries.joinToString(separator = ", ")
Untuk menggabungkan
Bundle
, gunakanbundle.keySet().joinToString(", ") { key -> "$key=${bundle[key]}" }
Ini mengurutkan kunci dalam urutan abjad.
Contoh:
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
sumber
Ada berbagai cara untuk menggabungkan string di kotlin. Contoh -
a = "Hello" , b= "World"
Menggunakan + operator
a+b
Menggunakan
plus()
operatora.plus(b)
Catatan - + secara internal dikonversi ke metode .plus () saja
Dalam 2 metode di atas, objek string baru dibuat karena string tidak dapat diubah. jika kita ingin mengubah string yang sudah ada, kita bisa menggunakan StringBuilder
StringBuilder str = StringBuilder("Hello").append("World")
sumber
yourString + = "newString"
Dengan cara ini Anda dapat menggabungkan string
sumber