谁能解释一下这是什么意思 scala>val sample=“12013-07-25 00:00:00.011599,关闭” 样本:字符串=12013-07-25 00:00:00.011599,已关闭 scala>sample.split(“,”)(1.split(“”) res15:Array[String]=数组(2013-07-2500:00:00.0) scala>sample.split(“,”)1.split(“”)0.split(“”).mkString(“”.toInt res16:Int=20130725 scala>sample.split(“,”)(1)split(“”) res17:Array[String]=数组(2013-07-2500:00:00.0) scala>sample.split(“”),“”(1)split(“”)(0).split(“”).mkString(“”.toInt :28:错误:值拆分不是Char的成员 sample.split(“”),“”(1)split(“”)(0).split(“”).mkString(“”.toInt ^
这里漏掉的点只适用于一种情况…谁能解释一下这是什么意思 scala>val sample=“12013-07-25 00:00:00.011599,关闭” 样本:字符串=12013-07-25 00:00:00.011599,已关闭 scala>sample.split(“,”)(1.split(“”) res15:Array[String]=数组(2013-07-2500:00:00.0) scala>sample.split(“,”)1.split(“”)0.split(“”).mkString(“”.toInt res16:Int=20130725 scala>sample.split(“,”)(1)split(“”) res17:Array[String]=数组(2013-07-2500:00:00.0) scala>sample.split(“”),“”(1)split(“”)(0).split(“”).mkString(“”.toInt :28:错误:值拆分不是Char的成员 sample.split(“”),“”(1)split(“”)(0).split(“”).mkString(“”.toInt ^,scala,Scala,这里漏掉的点只适用于一种情况… 我输入了一个错误,我注意到了,但我很好奇是否有解释。您忘记了(1) sample.split(“,”)(1).split(“”)(0).split(“-”).mkString(“”).toInt发生的事情是,如果没有点,方法将应用于错误的元素 scala> val sample ="1,2013-07-25 00:00:00.0,11599,CLOSED" sample: String = 1,2013-07-25 00:00:00.0,11599,CLOS
我输入了一个错误,我注意到了,但我很好奇是否有解释。您忘记了
(1)
sample.split(“,”)(1).split(“”)(0).split(“-”).mkString(“”).toInt
发生的事情是,如果没有点,方法将应用于错误的元素
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
^
接下来的所有内容都通过apply()
应用到传递给split()
的字符串
参数
当您在
sample.split(,“”(1)split(“”)(0)
中省略点时,这实际上等于sample.split(,“”(1)split(“”)(0)
,因为当您省略点时,您还可以省略括号
对于(“”)(0)
其中有一个隐式转换,将字符串
转换为字符串操作
:,它可以是字符集合:索引化的[Char,Repr]
,因此(“”)(0)
将返回“
此字符串集合的第一个字符
因此
sample.split(“,”)(1)split(“”)(0)
它也等于sample.split(“,”)(1)split“”
,因为上面的隐式转换。所以sample.split(“,”)split“”
类型仍然是Array[String]
而不是String
类型。当然,split
在Array
类型中不起作用。嘿,我知道我在下面提到了它,但我想知道它的解释。读得太快了。我删除了批评我答案的部分。:)谢谢你指出这一点。:)
sample.split(",")(1)split(" ")
// missing dot ^ becomes the same as
sample.split(",")(1) split " "
sample.split(",")(1) split " "(0) //the 0 index is the 1st Char of the String
sample.split(",")(1) split " "(0).split("-") //can't split a Char