scala> val sample ="1,2013-07-25 00:00:00.0,11599,CLOSED"
sample: String = 1,2013-07-25 00:00:00.0,11599,CLOSED
scala> sample.split(",")(1).split(" ")
res15: Array[String] = Array(2013-07-25, 00:00:00.0)
scala> sample.split(",")(1).split(" ")(0).split("-").mkString("").toInt
res16: Int = 20130725
scala> sample.split(",")(1)split(" ")
res17: Array[String] = Array(2013-07-25, 00:00:00.0)
scala> sample.split(",")(1)split(" ")(0).split("-").mkString("").toInt
<console>:28: error: value split is not a member of Char
sample.split(",")(1)split(" ")(0).split("-").mkString("").toInt
^
这里错过的点工作仅适用于一个案例...... 我做了一个错字,我注意到了,但我很想知道是否有解释。
答案 0 :(得分:2)
发生的事情是,如果没有点,方法将应用于错误的元素。
sample.split(",")(1)split(" ")
// missing dot ^ becomes the same as
sample.split(",")(1) split " "
通过apply()
将以下所有内容应用于传递给String
的{{1}}参数。
split()
答案 1 :(得分:1)
当你在sample.split(",")(1)split(" ")(0)
中省略点时,这实际上等于sample.split(",")(1) split (" ")(0)
,因为当你省略点时,你也可以省略括号。
并且对于(" ")(0)
,其中有隐式转化,将String
转换为StringOps
:implicit def augmentString(x: String): StringOps,它可以是< strong>字符集:IndexedSeqOptimized[Char, Repr]
,因此(" ")(0)
将从此字符串集合返回" "
第一个字符。
所以sample.split(",")(1) split (" ")(0)
也等于sample.split(",")(1) split " "
,因为上面的隐式转化。因此,sample.split(",")(1) split " "
类型仍为Array[String]
而非String
类型。当然,split
无法在Array
类型中使用。
答案 2 :(得分:-1)
您忘记了(1)
sample.split(",")(1).split(" ")(0).split("-").mkString("").toInt