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

Scala将逗号分隔的字符串转换为数组,scala,Scala,我有一个如下所示的字符串: “1100,535000,23,3,3,4,5,5” 我只想把它转换成一个由不同整数元素组成的数组。看起来像是: Array(1, 100, 53, 5000, 23, 3, 4, 5) Scala中是否有String方法可以帮助实现这一点 scala> "1,100,53,5000,23,3,3,4,5,5".split(",").map(_.toInt).distinct res1: Array[Int] = Array(1, 100, 53, 5000,

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

“1100,535000,23,3,3,4,5,5”

我只想把它转换成一个由不同整数元素组成的数组。看起来像是:

Array(1, 100, 53, 5000, 23, 3, 4, 5)
Scala中是否有
String
方法可以帮助实现这一点

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)
显然,如果数组中的某个值不是整数,则会引发异常


编辑:没有看到“仅不同数字”部分,修复了我的答案。

添加了类型检查,以检查可解析为Int的字符串:

package load.data

object SplitArray {

  def splitArrayintoString(s: String): Set[Int] =
    {
      val strArray = s.split(",")
      strArray filter isParseAbleAsInt map (_.toInt) toSet
    }

  private def isParseAbleAsInt(str: String): Boolean =
    str.forall(Character.isDigit(_))

}

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

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)

Scala 2.13
开始,如果您希望使用无法投射的项目,您可能希望使用,以便安全地将这些拆分的
字符串
s投射到
选项[Int]
s,并使用
平面图消除它们:

"1,100,53s,5000,4,5,5".split(',').flatMap(_.toIntOption).distinct
// Array[Int] = Array(1, 100, 5000, 4, 5)