有谁知道这是否可以做到?指定工作日,不重复,按顺序并用短划线分隔。但是在第一天之前或之后都不会出现冲刺。
示例:
“星期一” “周一至周二至周四” “星期三 - 周五-周六 - 周日”
但不是:
“星期一到” “-Mon,周二至周四” “星期五 - 星期三 - 星期一” “周一星期一”
任何想法都将不胜感激。感谢。
答案 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中的日期分开了,您可以使用循环轻松检查它们是否有序。