失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 时间合并 周一至周五

时间合并 周一至周五

时间:2023-07-14 17:24:09

相关推荐

时间合并 周一至周五

有需求如下:

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

代码如下:

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));}

输出结果:

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

如果觉得《时间合并 周一至周五》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。