我有一个由日期组成的字符串,我想只选择一个特定的字段。如何在scala中提取。
我的示例字符串是:
8月4日星期一:发货
我想要字符串
8月4日
如何执行此操作是在scala中
答案 0 :(得分:1)
这是使用原始正则表达式的一种方式:
val str = "Monday, 4th Aug : shipping"
val regex = "^Monday, (\\d+)[a-z]{2} ([A-z]{3}) : [A-z]+$".r
scala> Option(str) collect { case regex(day, month) => s"$day $month" }
res130: Option[String] = Some(4 Aug)
我使用了Option
和collect
,因此如果没有匹配,我可以返回None
。我使用regex(day, month)
模式匹配正则表达式中的捕获组,然后使用它们来创建新字符串。要处理仅匹配星期/实际月份的天数,您可能希望使用OR或其他东西改进该正则表达式。或者,如果你真的不在乎,你可以改变周一"匹配一些字符串。
例如
val regex = "^(Monday|Tuesday), (\\d+)[a-z]{2} ([A-z]{3}) : [A-z]+$".r
scala> Option(str) collect { case regex(_, day, month) => s"$day $month" }
res132: Option[String] = Some(4 Aug)