Kotlin - How to correctly concatenate a String
Solution 1:
String Templates/Interpolation
In Kotlin, you can concatenate using String interpolation/templates:
val a = "Hello"
val b = "World"
val c = "$a $b"
The output will be: Hello World
- The compiler uses
StringBuilder
for String templates which is the most efficient approach in terms of memory because+
/plus()
creates new String objects.
Or you can concatenate using the StringBuilder
explicitly.
val a = "Hello"
val b = "World"
val sb = StringBuilder()
sb.append(a).append(b)
val c = sb.toString()
print(c)
The output will be: HelloWorld
New String Object
Or you can concatenate using the +
/ plus()
operator:
val a = "Hello"
val b = "World"
val c = a + b // same as calling operator function a.plus(b)
print(c)
The output will be: HelloWorld
- This will create a new String object.
Solution 2:
kotlin.String
has a plus
method:
a.plus(b)
See https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/plus.html for details.
Solution 3:
I agree with the accepted answer above but it is only good for known string values. For dynamic string values here is my suggestion.
// 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
This is useful for concatenating list of strings with separator.
Solution 4:
Yes, you can concatenate using a +
sign. Kotlin has string templates, so it's better to use them like:
var fn = "Hello"
var ln = "World"
"$fn $ln"
for concatenation.
You can even use String.plus()
method.