Mar*_*sky 15
该substring方法当然可以帮助您,但Scala 2.8中的String也支持序列上的所有其他方法.本类StringOps ScalaDoc给出了完整的列表.
特别是,该splitAt方法非常方便.这是一个REPL互动,展示了如何.
scala> val ymd = "yyyyMMdd"
ymd: java.lang.String = yyyyMMdd
scala> val (y, md) = ymd splitAt 4
y: String = yyyy
md: String = MMdd
scala> val (m, d) = md splitAt 2
m: String = MM
d: String = dd
scala> y+"-"+m+"-"+d
res3: java.lang.String = yyyy-MM-dd
Run Code Online (Sandbox Code Playgroud)
只需substring()在字符串上使用该方法即可.请注意,Scala字符串的行为类似于Java字符串(使用一些额外的方法),因此任何内容都java.lang.String可以在Scala字符串上使用.
val s = "20100903"
val t = s.substring(0, 4) // t will contain "2010"
Run Code Online (Sandbox Code Playgroud)
(注意,参数不是长度和起始索引,而是起始索引(包括)和结束索引(不包括)).
但是,如果这是关于解析日期,为什么java.text.SimpleDateFormat不像在Java中那样使用?
val s = "20100903"
val fmt = new SimpleDateFormat("yyyyMMdd")
val date = fmt.parse(s) // will give you a java.util.Date object
Run Code Online (Sandbox Code Playgroud)
如果你正在使用Joda Time,你应该可以使用
val date = DateTimeFormat.forPattern("yyyyMMdd, HHmmss")
.parseDateTime(field1 + ", " + field2)
Run Code Online (Sandbox Code Playgroud)
对于像这样解析字符串的更普遍的问题,使用正则表达式会很有帮助(虽然在这种情况下我不推荐它):
scala> val Date = "(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)".r
Date: scala.util.matching.Regex = (\d\d\d\d)(\d\d)(\d\d)
scala> "20100903" match {
| case Date(year, month, day) => year + "-" + month + "-" + day
| }
res1: java.lang.String = 2010-09-03
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5885 次 |
| 最近记录: |