Java正则表达式 - 工作日由破折号分隔

时间:2016-05-26 07:14:15

标签: java regex

有谁知道这是否可以做到?指定工作日,不重复,按顺序并用短划线分隔。但是在第一天之前或之后都不会出现冲刺。

示例:

“星期一” “周一至周二至周四” “星期三 - 周五-周六 - 周日”

但不是:

“星期一到” “-Mon,周二至周四” “星期五 - 星期三 - 星期一” “周一星期一”

任何想法都将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

这是一个远离优雅的工作解决方案:

(((((星期一)( - 星期二)( - 周三)( - 星期四)( - 周五)( - 周六)( - 周日))|??????((星期二)( - 周三) ( - 星期四)( - 周五)( - 周六)( - 周日)))|????????((星期三)( - 星期四)( - 周五)( - 周六)( - 周日))) |((星期四)( - 周五)( - 周六)( - 周日)|??((星期五)( - 周六)( - 周日))?)|(?(星期六)( - 周日)))| (日)

表达式是针对每个可能的第一天定义的,在这种情况下,第一天没有先前的短划线。

也许可以做得更好。

答案 1 :(得分:0)

以下是比Leo提供的正则表达式更容易理解的方法:

步骤1: :检查字符串开头和结尾的破折号。这样可以很容易做到:

if (dayString.charAt(0) == '-' || dayString.charAt(dayString.length() - 1) == '-') {
    System.out.println("Invalid dash.");
}

步骤2: 将字符串拆分为几天。您不必担心日期之间的破折号,因此可以将其删除并将日期拆分为单独的值:

String[] days = dayString.split("-");

第3步: 检查日期是否正确。现在,字符串ar中的日期分开了,您可以使用循环轻松检查它们是否有序。