js混合字符串提取时间, JavaScript字符串提取时间

2022-05-17  本文已影响0人  执笔于情

最近帮同事一个忙, 根据一堆混合字符串, 给时间和备注单独一行, 利于整理表格
那么就涉及到从混合字符串中提取出时间, 然后再把两个时间之间的字符串拼接


2022-03-29 13:10:40Australia Delivered2022-03-28 09:58:48Sydney Express pickup2022-03-21 10:55:49Sydney finish customs clearance2022-03-14 14:00:39Sydney Customs clearance in progress2022-03-14 11:33:15Sydney Flight arrived2022-03-13 23:09:30hongkong 航班已起飞2022-03-11 20:19:22hongkong 柜子已经提到,已经安排拆柜,预计3.13日航班2022-03-10 17:40:48hongkong 预计3月11日提柜2022-03-09 11:08:43hongkong由于香港疫情,很多拖车被政府征收,导致柜子在港无法提回来,航 展开详情2022-03-09 11:06:41hongkong由于香港疫情,很多拖车被政府征收,导致柜子在港无法提回来,航 展开详情2022-03-07 19:16:47CHINA Origin Scan2022-03-04 17:55:39深圳 已安排下港,预计3月9日起飞2022-03-04 17:53:21CHINA Origin Scan2022-03-04 17:29:34CHINA The package has been picked up from the sender2022-03-04 10:15:10CHINA Order information received


期待效果, 时间一行, 备注一行
那么就先分析一波正则

// 我这里假设str是等于上面的混合字符串哈, 因为在这里复制太长, 网页显示是直接横向滚动条, 影响网友阅读
var str = "开头的字符串";
var arr = str.match(/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g);
var arr1 = [];
for(let i = 0; i < arr.length; i++) {
    if(str.indexOf(arr[i]) != -1) {
        // 这里后面加19是因为时间格式加上空格, 是19位数, 如2022-05-17 18:15:00
        arr1.push(str.slice(str.indexOf(arr[i]), str.indexOf(arr[i])+19);
        // 这里的第二次push应该可以看懂吧, 第一个push, 添加进去的是时间,
        // 第二个push, 添加进去的是上一个时间后, 和下一个时间中间的文字, 也就是上面说的备注
        arr1.push(str.slice(str.indexOf(arr[i])+19, str.indexOf(arr[i+1])));
    }
}
console.log(arr1)

让我们看一下结果


结果.png

是不是达到了想要的效果, 后面想怎么来就怎么来, 一个for循环搞定
如果对你有帮助, 动动小手点个赞哦

上一篇 下一篇

猜你喜欢

热点阅读