Kotlin将数字arrayList元素强制转换为BigDecimal



我有arrayListval k = listOf<Any>("a","b","2","c","3"),如果它是数字(2,3(,我想在新列表中获得字符串和BigDecimal的列表。如何执行?

val c:List<Any> =

这样可以,但我认为这是个坏主意。如果你给我们更多关于你的问题的背景,我相信会有更好的方法。注意,这会将所有有效数字转换为BigDecimal,而不仅仅是23

val c: List<Any> = k.map {
it.toString().let { str ->
try {
BigDecimal(str)
} catch (e: NumberFormatException) {
str
}
}
}

一个简单的单行(请注意,这会将所有有效数字转换为BigDecimal,而不仅仅是23(:

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 }

最新更新