Syl*_*are 4 string list kotlin
我有一个字符串列表,例如:
listOf("1", "2", "3", "4", "+", "3")
Run Code Online (Sandbox Code Playgroud)
我想连接以便我只得到数字:"1234". 我首先尝试使用有效的 for 循环。
但是我想知道 Kotlin 是否有一种方法可以使用一条很好的一行来衬托整个事情,例如:
val myList = listOf("1", "2", "3", "4", "+", "3")
someConcatenationFunction(myList) // returns "1234"
Run Code Online (Sandbox Code Playgroud)
Syl*_*are 11
我找到的解决方案是这样的(像放在一个单独的文件中一样):
fun List<String>.concat() = this.joinToString("") { it }.takeWhile { it.isDigit() }
Run Code Online (Sandbox Code Playgroud)
所以基本上,它的作用是:
joinToString(""):JoinToString将列表的内容连接到字符串,""指定您不希望在连接的字符串中使用任何分隔符。{ it }.takeWhile { it.isDigit() }: 表示从连接列表中,我只想要数字字符。takeWhile将在第一个非数字处停止。给你!现在你可以简单地做:
listOf("1", "2", "3", "4", "+", "3").concat() // returns "1234"
Run Code Online (Sandbox Code Playgroud)
只需使用函数conact 所有适用于和joinToString()的列表项。下面是例如。CharString
val list = listOf("1", "2", "3", "4", "+", "5")
val separator = ","
val string = list.joinToString(separator)
println(string) //output: 1,2,3,4,+,5
Run Code Online (Sandbox Code Playgroud)
其他例如。
val list = listOf("My", "Name", "is", "Alise")
val separator = " "
val string = list.joinToString(separator)
println(string) //outeput: My Name is Alisse
Run Code Online (Sandbox Code Playgroud)