我有arrayListval k = listOf<Any>("a","b","2","c","3")
,如果它是数字(2,3(,我想在新列表中获得字符串和BigDecimal的列表。如何执行?
val c:List<Any> =
这样可以,但我认为这是个坏主意。如果你给我们更多关于你的问题的背景,我相信会有更好的方法。注意,这会将所有有效数字转换为BigDecimal
,而不仅仅是2
和3
。
val c: List<Any> = k.map {
it.toString().let { str ->
try {
BigDecimal(str)
} catch (e: NumberFormatException) {
str
}
}
}
一个简单的单行(请注意,这会将所有有效数字转换为BigDecimal
,而不仅仅是2
和3
(:
val c: List<Any> = listOf<Any>("a","b","2","c","3").map { it.toString().toBigIntegerOrNull() ?: it }
如果省略原始列表的Any
类型参数,Kotlin会将其推断为String
,因此可以简化为:
val c: List<Any> = listOf("a","b","2","c","3").map { it.toBigIntegerOrNull() ?: it }