Javascript 将值转换为可读小时数
我有以下几点:Javascript 将值转换为可读小时数,javascript,Javascript,我有以下几点: var case1 = '5.25 - 12.25, 13 - 18.5'; var case2 = '6.5 - 12, 13 - 18.5'; var case3 = '9 - 13, 14 - 18'; 我需要将它们转换为: result1; //05:15 - 12:15, 13:00 - 18:30; result2; //06:30 - 12:00, 13:00 - 18:30; result3; //09:00 - 13:00, 14:00 - 18:00; 是
var case1 = '5.25 - 12.25, 13 - 18.5';
var case2 = '6.5 - 12, 13 - 18.5';
var case3 = '9 - 13, 14 - 18';
我需要将它们转换为:
result1; //05:15 - 12:15, 13:00 - 18:30;
result2; //06:30 - 12:00, 13:00 - 18:30;
result3; //09:00 - 13:00, 14:00 - 18:00;
是否可以只使用正则表达式
规则:
1) 如果数字小于10,则添加前导0。2) 将
.25
替换为:15
,将.5
替换为:30
3) 如果点后没有任何内容,请添加
00
我试着用条件、替换等来实现它,但结果很糟糕。您可以使用一个正则表达式,但使用
replace
回调函数:
const案例=[
'5.25 - 12.25, 13 - 18.5',
'6.5 - 12, 13 - 18.5',
'9 - 13, 14 - 18'
];
const result=cases.map(c=>c.replace(/(\d+)(\。\d+)?/g,(\uh,m)=>
('0'+h).substr(-2)+':'+('0'+(数学地板(m*60)| | 0)).substr(-2)
));
控制台日志(结果)
您可以使用一个正则表达式,但使用replace
回调函数:
const案例=[
'5.25 - 12.25, 13 - 18.5',
'6.5 - 12, 13 - 18.5',
'9 - 13, 14 - 18'
];
const result=cases.map(c=>c.replace(/(\d+)(\。\d+)?/g,(\uh,m)=>
('0'+h).substr(-2)+':'+('0'+(数学地板(m*60)| | 0)).substr(-2)
));
控制台日志(结果)代码>非正则表达式解决方案:
const cases = [
'5.25 - 12.25, 13 - 18.5',
'6.5 - 12, 13 - 18.5',
'9 - 13, 14 - 18'
];
const result = cases.map( c =>
c.split(", ").map(range =>
range.split(" - ").map(time => {
const [hours,mins] = time.split(".");
return ("00"+hours).substr(-2)+":"+(Math.floor( mins*6/10 ) || "00");
}).join(" - ")
).join(", ")
);
非正则表达式解决方案:
const cases = [
'5.25 - 12.25, 13 - 18.5',
'6.5 - 12, 13 - 18.5',
'9 - 13, 14 - 18'
];
const result = cases.map( c =>
c.split(", ").map(range =>
range.split(" - ").map(time => {
const [hours,mins] = time.split(".");
return ("00"+hours).substr(-2)+":"+(Math.floor( mins*6/10 ) || "00");
}).join(" - ")
).join(", ")
);
var案例=['5.25-12.25,13-18.5',
'6.5 - 12, 13 - 18.5',
'9 - 13, 14 - 18'];
cases.forEach(函数(src){
var times=src.replace(/([\d\.])+/g,函数(匹配){
var秒=匹配*60;
var分钟=parseInt(秒/60);
var seconds=“00”+秒数%60;
秒=秒.substr(秒.长度-2);
返回分钟+“:”+秒;
});
console.log(次);
});代码>
var案例=['5.25-12.25,13-18.5',
'6.5 - 12, 13 - 18.5',
'9 - 13, 14 - 18'];
cases.forEach(函数(src){
var times=src.replace(/([\d\.])+/g,函数(匹配){
var秒=匹配*60;
var分钟=parseInt(秒/60);
var seconds=“00”+秒数%60;
秒=秒.substr(秒.长度-2);
返回分钟+“:”+秒;
});
console.log(次);
});代码>对于某些答案,您的案例字符串必须具有严格的格式,例如空格后。或之后-否则它将中断。对于某些答案,您的大小写字符串必须具有严格的格式,例如空格后。或者在之后-否则它会坏的。trincot谢谢这工作!你能包括没有ES6的例子吗?trincot谢谢你的帮助!但是,您是否可以包括没有ES6的示例?