3 回答
![?](http://img1.sycdn.imooc.com/5333a1920001d36402200220-100-100.jpg)
TA贡献1859条经验 获得超6个赞
let targetStr = getTree().data.boards[0].groups[0].items[0].name;
let fields = ['DATE', 'TIME', 'DURATION', 'TYPE'];
console.log(extractData(targetStr, fields));
function extractData(str, fields) {
return str.split(/\s*\|\s*/).reduce((res, entry) => {
var dat = entry.split(/\s*:\s*/);
if (dat.length > 2) {
dat = (dat + '').split(',');
dat[2] = dat[2].split(' ');
dat[1] = checkTime(dat[1], dat[2][1])
dat[1] = dat[1].concat(':' + dat[2][0] + ':00')
}
return fields.indexOf(dat[0]) > -1 ? Object.assign(res, { [dat[0]]: dat[1] }) : res;
}, {});
}
function checkTime(i, m) {
if (i < 10) {
i = "0" + i;
}
if (m == 'pm') {
i = parseInt(i) + 12
}
return i + '';
}
function getTree() {
return {
"data": {
"boards": [{
"owner": {
"id": 555555555
},
"groups": [{
"id": "new_group",
"title": "Forecasts",
"items": [{
"id": "355670938",
"name": "PIPE: Production & Client Management | STAGE: New Support Intake | NAME: TESTY | DATE: 10/27/2019 | TIME: 8:00 am | TIME ZONE: Central Time | DURATION: 60 minutes | TYPE: All Virtual | AUDIENCE VIEW:"
}]
}]
}]
},
"account_id": 55555555
};
}
![?](http://img1.sycdn.imooc.com/54584cfb0001308402200220-100-100.jpg)
TA贡献1801条经验 获得超8个赞
鉴于 TIME 格式总是像 'HH:MM (am|pm)' 你可以像这样重新格式化它:
let targetStr = getTree().data.boards[0].groups[0].items[0].name;
let fields = ['DATE', 'TIME', 'DURATION', 'TYPE'];
const data = extractData(targetStr, fields);
const [hours, minutes, amPm] = data.TIME.split(/[\s|:]/);
console.log({
...data,
TIME: [
(amPm === 'am') ? hours : (parseInt(hours) + 12),
minutes,
'00'
].join(':')
});
function extractData(str, fields) {
return str.split(/\s*\|\s*/).reduce((res, entry) => {
let [key, ...val] = entry.split(/\s*:\s*/);
return fields.indexOf(key) > -1 ? Object.assign(res, { [key]: val.join(':') }) : res;
}, {});
}
function getTree() {
return {
"data": {
"boards": [{
"owner": {
"id": 555555555
},
"groups": [{
"id": "new_group",
"title": "Forecasts",
"items": [{
"id": "355670938",
"name": "PIPE: Production & Client Management | STAGE: New Support Intake | NAME: TESTY | DATE: 10/27/2019 | TIME: 8:00 am | TIME ZONE: Central Time | DURATION: 60 minutes | TYPE: All Virtual | AUDIENCE VIEW:"
}]
}]
}]
},
"account_id": 55555555
};
}
![?](http://img1.sycdn.imooc.com/533e4d5b0001d57502200203-100-100.jpg)
TA贡献1757条经验 获得超7个赞
您可以提取h,m和am/pm部分,h如果是,则增加12 pm。由于输入没有秒字段,所以只是:00在末尾附加一个:
function hms(whatever){
var parts=whatever.match(/TIME\:\s(\d+)\:(\d+)\s([^\s]+)/);
var h=parseInt(parts[1]);
var m=parts[2];
if(parts[3]=="pm")h+=12;
return ("0"+h).slice(-2)+":"+m+":00";
}
var test1="PIPE: Production & Client Management | STAGE: New Support Intake | NAME: TESTY | DATE: 10/27/2019 | TIME: 8:00 am | TIME ZONE: Central Time | DURATION: 60 minutes | TYPE: All Virtual | AUDIENCE VIEW";
var test2="PIPE: Production & Client Management | STAGE: New Support Intake | NAME: TESTY | DATE: 10/27/2019 | TIME: 8:00 pm | TIME ZONE: Central Time | DURATION: 60 minutes | TYPE: All Virtual | AUDIENCE VIEW";
console.log(hms(test1));
console.log(hms(test2));
(test2
修改为pm
)。
添加回答
举报