如何将string转换为长在Kotlin?
Kotlin挑战已经开始。
所有的任务是编写控制台程序,从控制台读取参数,并将输出写入控制台,使自动检查成为可能。
在Kotlin中的主要方法看起来像
fun main(args: Array<String>): Unit { //do something }
任务中的大部分input参数应该被解释为数字。 所以,由于缺乏像Long.valueOf(String s)
这样的方法,我只是卡住了。 我不能把String转换成Long,我感到羞愧。
1. string.toLong()
将stringparsing为[Long]数字并返回结果。
如果string不是数字的有效表示forms,则返回NumberFormatException。
2. string.toLongOrNull()
将stringparsing为[Long]数字,并返回结果;如果string不是数字的有效表示forms,则返回
null
。
3. str.toLong(10)
将stringparsing为[Long]数字并返回结果。
如果string不是数字的有效表示forms,则返回NumberFormatException。
@throws IllegalArgumentException当[基数]不是string到数字转换的有效基数时。
public inline fun String.toLong(radix: Int): Long = java.lang.Long.parseLong(this, checkRadix(radix))
4. string.toLongOrNull(10)
将stringparsing为[Long]数字,并返回结果;如果string不是数字的有效表示forms,则返回
null
。@throws IllegalArgumentException当[基数]不是string到数字转换的有效基数时。
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
parsing为其他基本types。 下面的例子:
-
"true".toBoolean()
-
"10.0".toFloat()
-
"10.0".toDouble()
-
"10".toByte()
-
"10".toShort()
-
"10".toInt()
-
"10".toLong()
注意:提到jet.String
答案已经过时。 这是目前的Kotlin(1.0):
Kotlin中的任何String
都已经有了可以调用toLong()
的扩展函数。 没有什么特别的需要,只要使用它。
所有的String
扩展函数都被logging下来。 您可以在api参考中find标准lib的其他人
这真有趣。 这样的代码:
val num = java.lang.Long.valueOf("2"); println(num); println(num is kotlin.Long);
使这个输出:
2 true
我猜,在这种情况下,Kotlin会自动将java.lang.Long
和long primitive转换为kotlin.Long
。 所以,这是解决scheme,但我很乐意看到没有java.lang包使用的工具。
其实,90%的时间你也需要检查'长'是有效的,所以你需要:
"10".toLongOrNull()
对于基本types的每个“toLong”,都有一个“orNull”的等价物,并且这些允许与Kotlin保持无效的案例pipe理? 成语。