![](/img/trans.png)
[英]What is an elegant way to parse for a specific part of a JSON string using a different key:value pair? (Scala)
[英]transform string scala in an elegant way
我有以下输入字符串: val s = 19860803 000000
我想将它转换为 1986/08/03 我试过这个s.split(" ").head
,但这还不完整
有没有优雅的 scala 正则表达式编码方式来获得预期的结果?
您可以使用 3 个捕获组来使用类似日期的模式,并匹配以下空格和 6 位数字。
在替换中使用正斜杠替换中的 3 组。
val s = "19860803 000000"
val result = s.replaceAll("^(\\d{4})(\\d{2})(\\d{2})\\h\\d{6}$", "$1/$2/$3")
Output
result: String = 1986/08/03
我没有对此进行测试,但我认为以下内容会起作用
val expr = raw"(\d{4})(\d{2})(\d{2}) (.*)".r
val formatted = "19860803 000000" match {
case expr(year,month,day,_) =>. s"$year/$month/$day"
}
scala文档有很多好信息
另一种方法,没有正则表达式,使用slice
和take
。
val s = "19860803 000000"
val year = s.take(4)
val month = s.slice(4,6)
val day = s.slice(6,8)
val result = s"$year/$month/$day"
或作为一个班轮
val result = Seq(s.take(4), s.slice(4,6), s.slice(6,8)).mkString("/")
经常被忽视的patch()
可以做到这一点。 不需要正则表达式。
val s = "19860803 000000"
val rslt = s.take(8).patch(6,"/",0).patch(4,"/",0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.