Bardzo podstawowe pytanie, jaki jest właściwy sposób konkatenacji łańcucha w Kotlinie?
W Javie użyłbyś concat()
metody, np
String a = "Hello ";
String b = a.concat("World"); // b = Hello World
Ta concat()
funkcja nie jest jednak dostępna dla Kotlina. Czy powinienem użyć +
znaku?
a.plus(b)
alboa + b
i generowany jest ten sam kod bajtowy"Hello" + "Word"
jest tak samo wydajnych, jak przy użyciu StringBuilder, aby dołączyć do łańcucha,someHelloStringBuilder.append("World")
?kotlin.String
maplus
metodę:Szczegółowe informacje można znaleźć pod adresem https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/plus.html .
źródło
+
Operator jest normalne, nie wywołując tłumaczone funkcję operatoraplus
... to nie jest idiomatycznea = a.plus(b)
na przykładplus()
są mniej praktyczne niżStringBuilder
metoda dołączania, tj.Tak, możesz łączyć za pomocą
+
znaku. Kotlin ma szablony ciągów, więc lepiej ich używać jak:var fn = "Hello" var ln = "World"
"$fn $ln"
do konkatenacji.Możesz nawet użyć
String.plus()
metody.źródło
+
Operator jest normalne, nie wywołując tłumaczone funkcję operatoraplus
... to nie jest idiomatyczneZgadzam się z zaakceptowaną odpowiedzią powyżej, ale jest ona dobra tylko dla znanych wartości ciągów. Oto moja propozycja dla dynamicznych wartości ciągów.
// 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
Jest to przydatne do łączenia listy ciągów za pomocą separatora.
źródło
Podobnie jak @Rhusfer odpowiedz , napisałem to. W przypadku, gdy masz grupę
EditText
s i chcesz połączyć ich wartości, możesz napisać:listOf(edit_1, edit_2, edit_3, edit_4).joinToString(separator = "") { it.text.toString() }
Jeśli chcesz połączyć
HashMap
, użyj tego:map.entries.joinToString(separator = ", ") // Result: // id=123, name=John, surname=Smith
źródło
Spróbuj tego, myślę, że jest to natywny sposób łączenia ciągów w Kotlinie:
val result = buildString{ append("a") append("b") } println(result) // you will see "ab" in console.
źródło
buildString {
zamiaststringBuild {
Istnieją różne sposoby łączenia łańcuchów w kotlin Przykład -
a = "Hello" , b= "World"
Korzystanie z operatora +
a+b
Korzystanie
plus()
operatora.plus(b)
Uwaga - + jest wewnętrznie konwertowane tylko do metody .plus ()
W powyższych 2 metodach nowy obiekt typu string jest tworzony, ponieważ ciągi znaków są niezmienne. jeśli chcemy zmodyfikować istniejący ciąg, możemy użyć StringBuilder
StringBuilder str = StringBuilder("Hello").append("World")
źródło
yourString + = "newString"
W ten sposób możesz połączyć ciąg
źródło