有需求如下:

选中连续时间,显示时做合并所选内容。如:
选中:周一、周二、周三、周四、周五
显示:周一至周五
选中:周一、周二、周三、周五、周六
显示:周一至周三,周五至周六
以此类推

代码如下:

 public static String getNewOpenDay(String openDay) {// 排序规则Map<String, Integer> map = new HashMap<>();map.put("周一", 1);map.put("周二", 2);map.put("周三", 3);map.put("周四", 4);map.put("周五", 5);map.put("周六", 6);map.put("周日", 7);String[] days = openDay.split("、");StringBuilder sb = new StringBuilder();// 是否连续int continuous = 0;// 是否开始节点 如 周一至周五 中的 周一 || 周一, 周三至周六 中的 周三 和 周一boolean first = true;// 定义新数组,重新排序,可按自己的规则进行排序String[] attr = new String[7];for (int i = 0; i < days.length; i++) {attr[map.get(days[i]) - 1] = days[i];}// 遍历新数组拼接字符串for (int i = 0; i < attr.length; i++) {// 当前字符串不为空if (StringUtils.isNotBlank(attr[i])) {// 判断是否是开始节点if (first) {sb.append(attr[i]);// 赋值后不是开始节点first = false;// 连续值加1continuous++;} else {// 有连续值表示不是开始,有可能连续值是1if (continuous > 0) {continuous++;}// 如果是最后一个时间,直接拼接,无需处理if (attr.length-1 == i) {sb.append("至").append(attr[i]);}}} else {// 判断当前字符串是否已拼接过,若没拼接过,无需处理if (StringUtils.isNotBlank(sb.toString())) {// 判断是否是开始节点,若是开始节点也无需处理if (!first) {// 判断是否是连续值,若是连续值,且大于1,则取前一位数值if (continuous > 1) {sb.append("至").append(attr[i-1]);}// 若不是最后一个时间,以逗号分割,重置开始节点值,连续值if (attr.length-1 != i) {sb.append(",");first = true;continuous = 0;}}}}}if (sb.toString().endsWith(",")) {return sb.substring(0, sb.toString().length()-1);} else {return sb.toString();}}public static void main(String[] args) {String a = "周六、周日、周四";System.out.println(getNewOpenDay(a));String b = "周一、周二、周三、周四、周五";System.out.println(getNewOpenDay(b));String c = "周一";System.out.println(getNewOpenDay(c));String d = "周一、周二、周四、周五、周六";System.out.println(getNewOpenDay(d));String e = "周一、周二、周四、周五、周日";System.out.println(getNewOpenDay(e));String f = "周日、周一、周二";System.out.println(getNewOpenDay(f));String g = "周日、周五、周一、周三";System.out.println(getNewOpenDay(g));}

输出结果:

周四,周六至周日
周一至周五
周一
周一至周二,周四至周六
周一至周二,周四至周五,周日
周一至周二,周日
周一,周三,周五,周日

时间合并、周一至周五相关推荐

  1. 取周一时间_周一到周五不好化妆?别着急,5款夏日通勤裸妆的教程来了!

    化妆已经成为了许多女生每天的必修课,好的妆容不仅可以让自己显得有精神还可以增添自己的自信.但是每天早上起来,能够化妆的时间又不多,所以只好每天都重复同一样妆容,快速便捷,时间久了就渐渐感觉了无生趣. ...

  2. oracle 获取每周五,oracle如何根据传入的时间参数,得到这个参数所在周的周一至周五的日期和星期数...

    select '1' AS XQBH,to_char(trunc(to_date('2020-06-28' ,'yyyy-mm-dd'),'iw'),'yyyy-mm-dd') AS RQ,'星期一' ...

  3. 自由主义者的周一和周五

    最近一直想写些类似的东西,总结一下,但真正动笔,是由一个视频引起的.今天无意中看到这样一段的视频(周一上班的熊样.周五下班的鸟样)分明是打工者周一到周五的缩影,非常有趣.但是,Think about ...

  4. mysql5好还是8_定投扣款哪天好?周一还是周五,月末还是月初?(定投知识8)...

    结论:无论是周一还是周五,月末还是月初,经过较长周期的定投以后,收益率基本相同,差别非常微小. 分析:数据回测验证.定投中证500指数基金,投资周期为2009年11月2日至2019年3月4日.分别选择 ...

  5. SpringBoot中cron表达式周一到周五运行设置

    SpringBoot中cron表达式周一到周五运行设置 源码级别解答 源码级别解答 周一到周五其实设置的是1-5(可以设置英文MON-FRI),并不是其它文章说的2-6,以下是两个不同版本的sprin ...

  6. switch语句实现周一到周五输出weekday;周六周天weekend C语言

    switch语句实现周一到周五输出weekday;周六周天weekend C语言 #include <stdio.h> #include "stdafx.h" //sw ...

  7. 用python根据当前星期,输出周一到周五的励志语句

    用python根据当前星期,输出周一到周五的励志语句 import datetime #导入datetime函数 mot = ['今天星期一: \n坚持下去不是因为我很坚强,而是因为我别无选择.', ...

  8. 关于Cron表达式中的周一至周五正确的配置

    前言:最近有个业务需求,需要做一个任务调度,其核心之一就是Cron表达式. 需求:做一个计划,由计划内容生成任务,要求在周一至周五08:00点生成任务. 表达式:0 0 8 ? * 1,2,3,4,5 ...

  9. 根据今天时星期几,输出当天工作安排,学校安排周一到周五学习编程,周六上机实验,周日休息 例如: 键盘上输入4,控制台输出学习编程

    //根据今天时星期几,输出当天工作安排,学校安排周一到周五学习编程,周六上机实验,周日休息 例如: 键盘上输入4,控制台输出学习编程 import java.util.Scanner; public ...

最新文章

  1. RedHat的yum源修改为CentOS的yum源
  2. 2021年高考成绩查询湖北状元,2021年湖北高考状元多少分,今年湖北高考状元资料名单...
  3. SpringBoot+JsTree实现在编辑时能选择树形结构并获取选中的ID
  4. 「Python」 ElementTree模块解析xml文件,建议小白阅读全文
  5. windows 10 systeminfo命令查看系统信息
  6. 朴素贝叶斯分类器python_朴素贝叶斯分类器及Python实现
  7. svn服务的安装与设置 .
  8. 【Level 08】U07 Mixed Feelings L4 Learning by heart
  9. 让ubuntu开机快一点:记开机出现Waiting for network configuration...
  10. 【081】◀▶ HTML CSS 学习
  11. 如何解决您的虚拟主机中有文件触发了安全防护报警规则,可能存在webshell网页木马...
  12. 局域网的分类:以太网、令牌环网、FDDI、ATM、WLAN
  13. 佳能Canon imageCLASS MF4830d 打印机驱动
  14. 使用shareSDK调用QQ好友分享遇到的问题
  15. java + jfreechart + itextpdf创建折线图饼图并导出为pdf
  16. “功能”之后,网约车决胜“服务”
  17. 读后感:黑衣人---走出软件作坊:三五个人十来条枪 如何成为开发正规军(三十四)
  18. 【计算方法】实验一:python使用二分法、不动点法、牛顿法求根
  19. Jackson 化学发光免疫印迹解决方案
  20. ElementUI 的tree结构实现目录的单选操作

热门文章

  1. 指标类数据标准如何定义?
  2. android 仿微信通知栏
  3. SeekBar实现实现进度提示随thum移动,自定义View
  4. FTP 错误 550 Failed to change directory 记录贴
  5. python 实现经纬度与大地2000坐标的转换
  6. qrcodejs2二维码生成js
  7. 通过gcloud创建Google Kubernetes Engine(GKE)并通过kubectl访问
  8. BLOB/TEXT column ‘sup_content‘ used in key specification without a key length
  9. js读取excel导出json文件
  10. Base64转码过程