所以,由于缺少像Long这样的方法。valueOf(字符串s)我卡住了。
如何将字符串转换为长在Kotlin?
所以,由于缺少像Long这样的方法。valueOf(字符串s)我卡住了。
如何将字符串转换为长在Kotlin?
当前回答
string可以使用扩展方法将它们解析为其他基本类型。在下面的例子:
“真正的”toBoolean()。 “10 . 0”toFloat()。 “10 . 0”toDouble()。 “10”toByte(。) “10”toShort(。) “10”toInt(。) “10”请(。)
其他回答
string.toLong()
其中字符串是变量。
String有相应的扩展方法:
"10".toLong()
如果您不想在解析时处理NumberFormatException
var someLongValue=string.toLongOrNull() ?: 0
答案中没有提到的一个很好的旧Java可能性是Java .lang. long .decode(String)。
小数的字符串:
Kotlin的String. tolong()等价于Java的Long.parseLong(String):
将字符串参数解析为带符号的十进制长. ...的 返回结果的长值,就像参数和 基数10作为parseLong(java.lang。String, int)方法。
Non-decimal字符串:
芬兰湾的科特林的字符串。toLong(基数:Int)相当于Java的eLong。parseLong(字符串、整数):
将字符串参数解析为带符号的长基数 第二个论点。字符串中的字符必须都是指定基数的数字…
下面是java.lang.Long.decode(String):
将String解码为Long。接受十进制、十六进制和八进制 由以下语法给出的数字:DecodableString: (符号)decimalnumbers |(符号)0x HexDigits |(符号)0x HexDigits |(符号)# HexDigits |(符号)0八进制数字 签名:- | +
这意味着decode可以解析像“0x412”这样的字符串,其中其他方法将导致NumberFormatException。
val kotlin_toLong010 = "010".toLong() // 10 as parsed as decimal
val kotlin_toLong10 = "10".toLong() // 10 as parsed as decimal
val java_parseLong010 = java.lang.Long.parseLong("010") // 10 as parsed as decimal
val java_parseLong10 = java.lang.Long.parseLong("10") // 10 as parsed as decimal
val kotlin_toLong010Radix = "010".toLong(8) // 8 as "octal" parsing is forced
val kotlin_toLong10Radix = "10".toLong(8) // 8 as "octal" parsing is forced
val java_parseLong010Radix = java.lang.Long.parseLong("010", 8) // 8 as "octal" parsing is forced
val java_parseLong10Radix = java.lang.Long.parseLong("10", 8) // 8 as "octal" parsing is forced
val java_decode010 = java.lang.Long.decode("010") // 8 as 0 means "octal"
val java_decode10 = java.lang.Long.decode("10") // 10 as parsed as decimal
在Kotlin中,将String转换为Long(表示64位有符号整数)很简单。
你可以用下面的例子:
val number1: Long = "789".toLong()
println(number1) // 789
val number2: Long? = "404".toLongOrNull()
println("number = $number2") // number = 404
val number3: Long? = "Error404".toLongOrNull()
println("number = $number3") // number = null
val number4: Long? = "111".toLongOrNull(2) // binary
println("numberWithRadix(2) = $number4") // numberWithRadix(2) = 7
使用toLongOrNull()方法,可以在?之后使用let{}作用域函数。安全呼叫接线员。
这种逻辑适用于只使用非空值执行代码块。
fun convertToLong(that: String) {
that.toLongOrNull()?.let {
println("Long value is $it")
}
}
convertToLong("123") // Long value is 123