Scala:将字符串拆分为两个整数

Dus*_*009 2 split scala

这是我目前的代码.我想将一个字符串拆分为两个整数并将它们存储到变量中.

val line = "1 2"
var a = 0
var b = 0
val c = line.split(" ") match { case Array(x,y) => (x.toInt, y.toInt) }
a = c._1
b = c._2
Run Code Online (Sandbox Code Playgroud)

有没有办法在Scala中做这样的事情?这更加紧凑.

(a,b) = line.split(" ") match { case Array(x,y) => (x.toInt, y.toInt) }
Run Code Online (Sandbox Code Playgroud)

表达式line.split("")匹配{case Array(x,y)=>(x.toInt,y.toInt)}返回一个整数的tupple所以我认为直接将两个整数与变量a和b联系起来工作.

pam*_*amu 8

这更紧凑,更干净

val Array(a,b) = line.split("\\s+").map(_.toInt)
Run Code Online (Sandbox Code Playgroud)

即使字符串中有更多数字,以下代码也能正常工作

val Array(a, b, _*) = line split "\\s+" map(_ toInt)
Run Code Online (Sandbox Code Playgroud)

点可选

val Array(a,b) = line split("\\s+") map(_.toInt)
Run Code Online (Sandbox Code Playgroud)

那这个呢 ?

val Array(a,b) = line split "\\s+" map(_ toInt)
Run Code Online (Sandbox Code Playgroud)

对于更具体的情况,这样做

val Array(a, ' ', b) = "1 2".toCharArray
Run Code Online (Sandbox Code Playgroud)

Scala REPL

scala> val line = "1 2"
line: String = "1 2"
scala> val Array(a,b) = line.split("\\s+").map(_.toInt)
a: Int = 1
b: Int = 2

scala> val line = "1 2 3  4"
line: String = "1 2 3  4"
scala> val Array(a, b, _*) = line split "\\s+" map(_ toInt)
a: Int = 1
b: Int = 2

scala> val Array(a, ' ', b) = "1 2".toCharArray
a: Char = '1'
b: Char = '2'
Run Code Online (Sandbox Code Playgroud)