Effektive Möglichkeit zum anfügen von strings, getrennt mit Komma [Kotlin]
Ich Frage mich, ob es eine effektive Möglichkeit der Trennung der verschiedenen strings mit Komma als separator?
In Java8
es war StringUtils.join(java.lang.Iterable,char)
.
Für Kotlin
fand ich nur joinToString
, die Konvertiten aus dem array/Liste zu einem string. So wie ich das verstehe, joinToString
konvertiert ganze Liste/array. Was ist, wenn ich konvertieren möchten einige Elemente aus array durch Komma getrennte Zeichenkette, die nicht alle von Ihnen? Wie würde man das machen? Gibt es etwas, das kurz und elegant aus Kotlin
(natürlich, ich kann auch meine eigene Funktion dafür, aber ich habe mich gerade gefragt).
list.forEachIndexed { index, item ->
if (item.isGreen) {
...
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ItemClass ist der Typ des Elements definiert, das isGreen Funktion oder Eigenschaft.
ItemClass::isGreen
ist eine Referenz auf diese Methode/Eigenschaft.Können Sie auch ein lambda-Ausdruck für den gleichen Effekt (siehe andere Antwort).
Bearbeiten: Sie können angeben, wie das Objekt dargestellt werden soll als String in der joinToString-Funktion, mit der Transformation argument.
Denn dies ist der Letzte parameter kann es gegeben werden, außerhalb der regulären Klammern:
Könnte man sogar weglassen der Klammern alle zusammen jetzt, aber Sie können verwendet werden, für andere Argumente.
Sie können nicht mit der Referenz-style (::), da es sich um einen komplexen Ausdruck, und nicht eine direkte Verweis auf eine bestimmte Methode oder Eigenschaft.
ItemClass::isGreen
unditemClass::content
und ich möchte die filter vonItemClass::isGreen
nur wie du geschrieben hast, aber nur joinToStringitemClass::content.name
joinToString
hat einetransform
parameter, nimmt eine lambda-Typ(T) -> String
, so können Sie geben{ it.content.name }
zu.list.joinToString(transform = { it.content.name })
mit einem benannten parameter verwenden, oder alslist.joinToString { it.content.name }
, da die lambda ist der Letzte parameter der Funktion.Für dieses Beispiel können Sie dies tun:
joinToString(separator = "\n")
.