所以,由于缺乏像
在Kotlin中如何将
Long.valueOf(String s)
这样的方法,我陷入了困境。在Kotlin中如何将
String
转换为Long
?Long.valueOf(String s)
这样的方法,我陷入了困境。String
转换为Long
?var numberString : String = "numberString"
// number is the Long value of numberString (if any)
var defaultValue : Long = defaultValue
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString is a valid number ? | true | false |
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString.toLong() | number | NumberFormatException |
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString.toLongOrNull() | number | null |
+—————————————————————————————————————————————+——————————+———————————————————————+
| numberString.toLongOrNull() ?: defaultValue | number | defaultValue |
+—————————————————————————————————————————————+——————————+———————————————————————+
// Throws exception if number has bad form
val result1 = "5678".toLong()
// Will be null if number has bad form
val result2 = "5678".toLongOrNull()
// Will be the given default if number has bad form
val result3 = "5678"
.toLongOrNull()
?: -1L // The default
// Will be return of the run block if number has bad form
val result4 = "5678"
.toIntOrNull()
?: run {
// ...
// return a Long
}
// Ignores any none-digit character in the string
val result5 = "56abc78"
.filter { it.isDigit() }
.joinToString(separator="")
.toLongOrNull()