加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在Scala中执行以下正则表达式匹配?

发布时间:2020-12-16 09:05:19 所属栏目:安全 来源:网络整理
导读:我的代码可能是如此屠杀,我需要用英语解释一下.基本上我已经创建了一个Date类,我希望它将String作为构造函数并处理两种情况 字符串格式为“2011-06-30” get()返回“2011-06-30 00:00:00.000” 字符串格式为“2011-06-30 16:32:19.452” get()拆分为rawD
我的代码可能是如此屠杀,我需要用英语解释一下.基本上我已经创建了一个Date类,我希望它将String作为构造函数并处理两种情况

>字符串格式为“2011-06-30”
get()返回“2011-06-30 00:00:00.000”
>字符串格式为“2011-06-30 16:32:19.452”

get()拆分为rawDate = 2011-06-30和rawTime = 16:32:19.452然后打印

我的尝试如下

case class Date(date: String) {

  // regex
  val DateAndTime = """rawDate rawTme""".r

  def get(): String = date match {
    case DateTime(rawDate,rawTime) => rawDate + "*" + rawTime
    case _ => date + " 00:00:00.000"
  }
}

不幸的是它甚至没有编译,但我不确定我哪里出错了

解决方法

val dateRegex = """([0-9]{4}-[0-9]{2}-[0-9]{2})"""
val timeRegex = """([0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3})"""
val DateOnly = dateRegex.r
val DateTime = (dateRegex + " " + timeRegex).r
def get(s:String) = s match {
  case DateTime(d,t) => d + "*" + t
  case DateOnly(d) => d + " 00:00:00.000"
}

scala> get("2011-06-30")
res1: java.lang.String = 2011-06-30 00:00:00.000

scala> get("2011-06-30 16:32:19.452")
res2: java.lang.String = 2011-06-30*16:32:19.452

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读