我有一個 kotlin 字串串列。我需要串列中每個字串的第一個字符,并按照以下預期方式格式化字串。是否有一種相當于獲取串列中第一個字符的 buitin 方法?
fun main() {
val stringlist = listOf("One", "Two", "Four")
var name = "Flock"
// Current Output Flock:One:Two:Four
println(name ":" stringlist.joinToString(":"))
// expected output Flock:O:T:F
}
uj5u.com熱心網友回復:
從串列中提取帶有map的第一個字符:
fun main() {
val firstCharList = listOf("One", "Two", "Four").map { it.first() }
val name = "Flock"
println(name ":" firstCharList.joinToString(":"))
}
uj5u.com熱心網友回復:
的最后一個引數joinToString是一個 lambda 型別(T) -> CharSequence,您可以在其中將每個元素轉換為應該出現在輸出中的 CharSequence。所以你的代碼會變成:
println(name ":" stringlist.joinToString(":") { it.first().toString() })
請注意,first如果字串為空,則會拋出。如果您想避免這種情況,您可以預先過濾掉空字串或使用類似firstOrNull()?.toString().orEmpty()將空字串轉換為空字串的方法。
uj5u.com熱心網友回復:
也可以傳遞it.take(1)給 的transform引數joinToString。take(n)回傳n字串的第一個字符。您不需要在此處處理任何錯誤或可空性,因為take(n)如果n大于字串的長度,則回傳原始字串。
println(name ":" stringlist.joinToString(":") { it.take(1) })
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/373338.html
標籤:科特林
