【问题标题】:How to convert string array to int array in scala如何在scala中将字符串数组转换为int数组
【发布时间】:2015-07-05 04:50:59
【问题描述】:

我对 Scala 很陌生,我不确定这是如何完成的。我没有运气用谷歌搜索它。 让我们假设代码是:

var arr = readLine().split(" ")

现在 arr 是一个字符串数组。假设我知道我输入的行是一系列数字,例如1 2 3 4,我想将arr转换为一个Int(或int)数组。

我知道我可以使用 .toInt 转换单个元素,但我想转换整个数组。

谢谢你,如果问题很愚蠢,我们深表歉意。

【问题讨论】:

    标签: scala types casting


    【解决方案1】:

    使用.map 将函数应用于集合的每个元素:

    scala> val arr = Array("1", "12", "123")
    arr: Array[String] = Array(1, 12, 123)
    
    scala> val intArr = arr.map(_.toInt)
    intArr: Array[Int] = Array(1, 12, 123)
    

    注意_.toInt 符号等同于x => x.toInt

    scala> val intArr = arr.map(x => x.toInt)
    intArr: Array[Int] = Array(1, 12, 123)
    

    显然,如果其中一个元素不是整数,这将引发异常:

    scala> val arr = Array("1", "12", "123", "NaN")
    arr: Array[String] = Array(1, 12, 123, NaN)
    
    scala> val intArr = arr.map(_.toInt)
    java.lang.NumberFormatException: For input string: "NaN"
      at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
      at java.lang.Integer.parseInt(Integer.java:580)
      at java.lang.Integer.parseInt(Integer.java:615)
      at scala.collection.immutable.StringLike$class.toInt(StringLike.scala:272)
      ...
      ... 33 elided
    

    【讨论】:

      【解决方案2】:

      Scala 2.13 开始,您可能希望使用String::toIntOption 以安全地将Strings 转换为Option[Int]s,从而处理无法转换的项目:

      Array("1", "12", "abc", "123").flatMap(_.toIntOption)
      // Array[Int] = Array(1, 12, 123)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-26
        • 1970-01-01
        • 1970-01-01
        • 2016-11-14
        • 1970-01-01
        • 2021-12-21
        • 2016-08-14
        相关资源
        最近更新 更多