如何使用Kotlin何时查找字符串是否为数字?

我想在Kotlin中使用一个when()expression式来从一个函数返回不同的值。 输入是一个String ,但它可以解析为一个Int ,所以我想返回解析的Int如果可能的话,或者一个String如果不是。 由于输入是一个String我不能使用is型检查expression式。

有没有什么惯用的方法来实现呢?

编辑:我的问题是如何的when()expression式应该看起来像,而不是关于返回types。

2 Solutions collect form web for “如何使用Kotlin何时查找字符串是否为数字?”

使用toIntOrNullwhen

 fun intOrString(str: String): Any { val v = str.toIntOrNull() return when(v) { null -> str else -> v } } fun main(args: Array) { println(intOrString("4")) // prints 4 println(intOrString("x")) // prints x } 

如果toIntOrNull不可用,请使用普通的旧exception处理:

 fun intOrString(str: String) = try { // returns Any str.toInt() } catch(e: NumberFormatException) { str } 

注意:因为OP要求,所以我用了。 elvis操作符( ?: :)肯定会更合适。

kotlin.text包中的toIntOrNull函数(在kotlin-stdlib )可能是你正在寻找的东西:

toIntOrNull

 fun String.toIntOrNull(): Int? (source) 

平台和版本要求:Kotlin 1.1

将字符串解析为一个Int数字,并返回结果;如果该字符串不是数字的有效表示forms,则返回null。

 fun String.toIntOrNull(radix: Int): Int? (source) 

平台和版本要求:Kotlin 1.1

将字符串解析为一个Int数字,并返回结果;如果该字符串不是数字的有效表示forms,则返回null。

更多信息: https : //kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-int-or-null.html

  • 导入和锯齿实践
  • 未连接到Internet时发生致命exception
  • Jersey CORS配置允许来自服务器的响应cookie
  • 如何处理Android的改造反应Kotlin?
  • Kotlin中的静态扩展方法
  • Kotlin:Java 8的哪些function尚未支持?
  • 是否有一个简单的代码在Kotlin中玩addDetail?
  • 如何简化kotlin函数的默认实现
  • Kotlin:为什么Android Studio中大多数variables都被强调,我该如何关闭?
  • Kotlin中的选项卡式活动(Android Studio)
  • 我怎样才能使用回报,而不是让Kotlin?
  • Kotlin language will be the best programming language for Android.