如何在Scala中将字符串数组转换为整数数组

10

我对Scala非常陌生,不确定该如何做。我已经进行了谷歌搜索,但没有找到相关的结果。假设代码如下:

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

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

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

谢谢,如果问题很愚蠢,请原谅。

2个回答

17
在IT技术中,对于一个集合中的每个元素应用函数可以使用“.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

0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接