我需要将从文件读入的字符串分割成一个值数组。我想在逗号处切割字符串,例如,如果读入的字符串为:
"name, 2012, 2017"
数组中的值将是:
- 数组下标0 - name
- 数组下标1 - 2012
- 数组下标2 - 2017
我在Java中找到了这个例子:
String[] stringArray = string.split(",");
我该如何在 Kotlin 中实现它?
我需要将从文件读入的字符串分割成一个值数组。我想在逗号处切割字符串,例如,如果读入的字符串为:
"name, 2012, 2017"
数组中的值将是:
我在Java中找到了这个例子:
String[] stringArray = string.split(",");
我该如何在 Kotlin 中实现它?
val strs = "name, 2012, 2017".split(",").toTypedArray()
split
方法将返回一个列表而不是一个数组。 - TheHebrewHammerval strs = "name, 2012, 2017".split(",").toTypedArray()
。 - JK Lysplit
方法实际上在内部使用了一个ArrayList
,因此最终结果是相同的。 - alex就是这么简单:
val string: String = "leo_Ana_John"
val yourArray: List<String> = string.split("_")
你得到:yourArray[0] == leo, yourArray[1] == Ana, yourArray[2]==John
在这种情况下,只需要将我的代码中的“_”改为你的“,”即可。如下所示:
val yourArray: List<String> = string.split(", ")
val values = "Name1 ,Name2, Name3" // Read List from somewhere
val lstValues: List<String> = values.split(",").map { it -> it.trim() }
lstValues.forEach { it ->
Log.i("Values", "value=$it")
//Do Something
}
最好使用trim()来删除字符串周围存在的空格。请注意,如果在字符串末尾有一个“,”,它会产生一个空项,因此可以在分割之前使用此代码进行检查: if ( values.endsWith(",") )
values = values.substring(0, values.length - 1)
如果您想将列表转换为数组,请使用此代码:
var arr = lstValues.toTypedArray()
arr.forEach { Log.i("ArrayItem", " Array item=" + it ) }
var newStrg= "853 kB"
val mString = newStrg!!.split(" ").toTypedArray()
这里的Split参数是空格
mString[0] = "853"
mString[1] = "kB"
newStrg!!
中的 !!
是不必要的。 - Marcel Bro如果您想在Kotlin中使用多个分隔符split
,则需要单独传递它们:
val validUrl = "http://test.com/</a> -".split(">", " ", "<").first()
使用内置的split方法分割字符串,然后使用方法扩展isNum()来返回是否为数字。
fun String.isNum(): Boolean{
var num:Int? = this.trim().toIntOrNull()
return if (num != null) true else false
}
for (x in "name, 2012, 2017".split(",")) {
println(x.isNum())
}