Answers:
1。 string.toLong()
将字符串解析为[Long]数字并返回结果。
如果字符串不是数字的有效表示形式,则@throws NumberFormatException。
2。 string.toLongOrNull()
将字符串解析为[Long]数字并返回结果,或者
null
如果字符串不是数字的有效表示形式。
3。 str.toLong(10)
将字符串解析为[Long]数字并返回结果。
如果字符串不是数字的有效表示形式,则@throws NumberFormatException。
如果[radix]对于将字符串转换为数字无效,则为@throws IllegalArgumentException。
public inline fun String.toLong(radix: Int): Long = java.lang.Long.parseLong(this, checkRadix(radix))
4。 string.toLongOrNull(10)
将字符串解析为[Long]数字并返回结果,或者
null
如果字符串不是数字的有效表示形式。如果[radix]对于将字符串转换为数字无效,则为@throws IllegalArgumentException。
public fun String.toLongOrNull(radix: Int): Long? {...}
5, java.lang.Long.valueOf(string)
public static Long valueOf(String s) throws NumberFormatException
String
有相应的扩展方法:
"10".toLong()
String
功能都具有扩展功能toLong()
以及toInt()
其他功能。您可以使用这些。也许@ilya可以将此答案更新为当前的Kotlin(删除jet.String
参考。)
扩展方法可用于String
将解析为其他原始类型。下面的例子:
str.toLongOrNull()
如果您不能保证输入的格式正确,则其他类似命名的方法也很有用。有了这个,您可以做类似的事情str.toLongOrNull()?.let { doSomethingWith(it) } ?: println("Please input a number")
注意:提到jet.String
的答案已经过时。这是当前的Kotlin(1.0):
String
Kotlin中的任何一个已经具有可以调用的扩展功能toLong()
。不需要任何特殊的东西,只需使用它即可。
的所有扩展功能String
均已记录在案。您可以在api参考中找到其他用于标准lib的文件
string.toLong()
string
您的变量在哪里。
答案中未提到的一种古老的Java可能性是java.lang.Long.decode(String)
。
十进制字符串:
Kotlin的String.toLong()
等效于Java的Long.parseLong(String)
:
将字符串参数解析为带符号的十进制long。...返回的结果是long值,就像参数和基数10作为
parseLong(java.lang.String, int)
方法的参数一样。
非十进制字符串:
Kotlin的String.toLong(radix: Int)
等效于Java的eLong.parseLong(String, int)
:
将字符串参数解析为第二个参数指定的基数中的有符号长整数。字符串中的字符必须全部是指定基数的数字 ...
这是java.lang.Long.decode(String)
图片:
将字符串解码为Long。接受以下语法给定的十进制,十六进制和八进制数字:DecodableString:
(符号)DecimalNumeral | (Sign)0x十六进制数字| (签名)0X HexDigits | (签名)#HexDigits | (签名)0 OctalDigits
标志:-| +
这意味着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 1.3中将转换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)
println("numberWithRadix(2) = $number4") // numberWithRadix(2) = 7
如果您不想NumberFormatException
在解析时处理
var someLongValue=string.toLongOrNull() ?: 0
实际上,有几种方法:
鉴于:
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 |
+—————————————————————————————————————————————+——————————+———————————————————————+