Scala将逗号分隔的字符串转换为Array

ran*_*its 9 scala

我有一个如下所示的字符串:

"1,100,53,5000,23,3,3,4,5,5"

我想简单地把它变成一个不同的Integer元素的数组.看起来像:

Array(1, 100, 53, 5000, 23, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)

StringScala中有一种方法可以帮助解决这个问题吗?

Mar*_*rth 16

scala> "1,100,53,5000,23,3,3,4,5,5".split(",").map(_.toInt).distinct
res1: Array[Int] = Array(1, 100, 53, 5000, 23, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)

显然,如果数组中的某个值不是整数,则会引发异常.

编辑:没有看到'仅限于数字'部分,修正了我的答案.


kom*_*pot 7

另一个版本很好地处理非可解析的值,只是忽略它们.

scala> "1,100,53,5000,will-not-fail,23,3,3,4,5,5".split(",").flatMap(maybeInt => 
    scala.util.Try(maybeInt.toInt).toOption).distinct
res2: Array[Int] = Array(1, 100, 53, 5000, 23, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)