如何在Kotlin中将字符串转换为长整型?

223
所以,由于缺乏像Long.valueOf(String s)这样的方法,我陷入了困境。
在Kotlin中如何将String转换为Long
12个回答

1
实际上,有几种方法:
给定:
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          |
+—————————————————————————————————————————————+——————————+———————————————————————+

你如何将 defaultValue = Long : defaultValue 转换为默认值?在你的示例中,numberString 会被用在哪里?我认为应该是 defaultValue = Long : numberString。 - James Smith

0
以下是几种做法:
// 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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接