所以,由于缺少像Long这样的方法。valueOf(字符串s)我卡住了。

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


当前回答

String有相应的扩展方法:

"10".toLong()

其他回答

实际上,90%的情况下你还需要检查long是否有效,所以你需要:

"10".toLongOrNull()

有一个'orNull'等效的每个'toLong'的基本类型,这些允许管理无效的情况与Kotlin?习语。

这很有趣。代码如下:

val num = java.lang.Long.valueOf("2");
println(num);
println(num is kotlin.Long);

生成如下输出:

2
true

我猜,Kotlin从java.lang.Long和long原语转换到Kotlin。在这种情况下自动长。所以,这是解决方案,但我很高兴看到没有java的工具。朗包用法。

实际上,有几种方法:

考虑到:

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          |
+—————————————————————————————————————————————+——————————+———————————————————————+

如果您不想在解析时处理NumberFormatException

 var someLongValue=string.toLongOrNull() ?: 0

注:回答中提及喷气机。字符串过时。以下是当前的Kotlin (1.0):

Kotlin中的任何字符串都有一个扩展函数,可以调用toLong()。不需要什么特别的东西,就用它吧。

String的所有扩展函数都有文档。你可以在api参考中找到其他标准库