在我的数据库中,我有几种开放时间格式:
Mo, Di, Do, Fr 10:00-19:00, Mi 09:30-19:00, Sa 10:00-18:30
Mo-Fr 10:00-18:00, Sa 10:00-15:00, So 11:00-17:00
Mo - Fr 10:00 - 19:00, Sa 10:00 - 18:00
Mo-Mi 9:30-20:00, Do-Sa 9:30-22:00
Mo-Sa 09:00-20:00
我想做的就是对这种格式进行正则表达式,接下来我将可以将其存储在列表或地图中。主要原因是要将此对象转移到新表中,该表已通过示例条目进行了定义:
+----+--------+-------------+-------+-------+---------+---------+
| ID | ENTITY | DAY_OF_WEEK | OPEN | CLOSE | CREATED | UPDATED |
+----+--------+-------------+-------+-------+---------+---------+
| 1 | 1 <FK> | 1 | 36000 | 72000 | <date> | <date> |
| 2 | 1 <FK> | 2 | 28800 | 43200 | <date> | <date> |
| 3 | 1 <FK> | 2 | 50400 | 72000 | <date> | <date> |
+----+--------+-------------+-------+-------+---------+---------+
我想从实际格式中获得的可能是地图Map<String, List<String>>
,其中键将是开放时间,值将是字符串天数列表。
首先您可以使用以下命令删除所有空格
s.replaceAll(" ", "");
然后您可以用数字开头的逗号分割字符串:
s.split("(?<=\\d),");
然后,对于在上一步中获得的数组的每个元素,您可以使用此正则表达式将信息分为几天的部分和小时的部分:
(.*?)(\d{1,2}:\d{2})-(\d{1,2}:\d{2})
第1组将包含天数,第2组-营业时间,第3组-营业时间。然后,您可以尝试用几天来分析零件:
如果包含逗号,然后按逗号分隔,您将获得日期列表
如果它包含-
,然后除以-
,您将获得一周的开始和结束日期