首页 文章

如何在Kotlin中将String转换为Long?

提问于
浏览
100

Kotlin挑战赛已经开始 .

所有任务都是编写一个控制台程序,从控制台读取参数并将输出写入控制台以进行自动检查 .

Kotlin的主要方法看起来像

fun main(args: Array<String>): Unit {
    //do something
}

任务中的大多数输入参数都应解释为数字 . 所以,由于缺乏像_156153这样的方法,我只是卡住了 . 我无法将String转换为Long,我感到惭愧 .

8 回答

  • 1

    注意:提及 jet.String 的答案已过时 . 这是目前的Kotlin(1.0):

    Kotlin中的任何 String 都有一个扩展功能,您可以调用 toLong() . 没有什么特别需要,只需使用它 .

    所有extension functions for String都有记录 . 你可以在api reference找到标准库的其他人

  • 6

    1. string.toLong()

    将字符串解析为[Long]数字并返回结果 . @throws NumberFormatException如果字符串不是数字的有效表示 .

    2. string.toLongOrNull()

    将字符串解析为[Long]数字并返回结果,如果字符串不是数字的有效表示,则返回null .

    3. str.toLong(10)

    将字符串解析为[Long]数字并返回结果 . @throws NumberFormatException如果字符串不是数字的有效表示 . @throws IllegalArgumentException [radix]不是字符串到数字转换的有效基数 .

    public inline fun String.toLong(radix: Int): Long = java.lang.Long.parseLong(this, checkRadix(radix))
    

    4. string.toLongOrNull(10)

    将字符串解析为[Long]数字并返回结果,如果字符串不是数字的有效表示,则返回null . @throws IllegalArgumentException [radix]不是字符串到数字转换的有效基数 .

    public fun String.toLongOrNull(radix: Int): Long? {...}
    

    5. java.lang.Long.valueOf(string)

    public static Long valueOf(String s) throws NumberFormatException
    
  • 52

    这真有趣 . 像这样的代码:

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

    使这个输出:

    2
    true
    

    我想,在这种情况下,Kotlin会自动将 java.lang.Long 和long原语转换为 kotlin.Long . 所以,它是解决方案,但我很乐意看到没有java.lang包使用的工具 .

  • 8

    String 有一个相应的扩展方法:

    "10".toLong()
    
  • 85

    string.toLong()

    其中 string 是你的变量 .

  • 89

    扩展方法可用于 String 来将它们解析为其他基本类型 . 以下示例:

  • 6

    实际上,90%的时间你需要检查'long'是有效的,所以你需要:

    "10".toLongOrNull()
    

    对于基本类型的每个'toLong',都有一个'orNull'等价物,这些允许管理与Kotlin保持一致的无效案例?成语 .

  • 0

    在Kotlin编程语言中有5种不同的方法将String转换为Long,如下所示:

    • string.toLong()

    • string.toLongOrNull()

    • string.toLong(10)

    • string.toLongOrNull(10)

    • java.lang.Long.valueOf(string)

    有关详细说明,请参阅docs .

相关问题