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;

是否可以只使用正则表达式?

规则:

1) 如果数量小于10,则添加前导0。
2) 将 .25 替换为 :15,将 .5 替换为 :30
3) 如果该点后面没有任何内容,请添加 00

我尝试用条件、替换等来做到这一点,但一团糟。

最佳答案

您可以使用一个正则表达式,但使用replace回调函数:

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.replace(/(\d+)(\.\d+)?/g, (_, h, m) => 
    ('0'+h).substr(-2) + ':' + ('0' + (Math.floor(m*60) || 0)).substr(-2)
));

console.log(result);

ES5 语法:

var cases = [
    '5.25 - 12.25, 13 - 18.5',
    '6.5 - 12, 13 - 18.5',
    '9 - 13, 14 - 18'
];

var result = cases.map(function (c) {
    return c.replace(/(\d+)(\.\d+)?/g, function (_, h, m) { 
        return ('0'+h).substr(-2) + ':' + ('0' + (Math.floor(m*60) || 0)).substr(-2);
    });
});

console.log(result);

关于javascript - 将值转换为可读的小时数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46434267/

相关文章:

javascript - 如何自动校正此灯箱中的图像尺寸?

javascript - 使用窗口打印方法打印页面时 Google chrome 卡住

javascript - jQuery,AJAX 使用 JSON 发布 Javascript 数组

javascript - Materialise Button 仅在单击某些部分时有效

javascript - Ionic 2 项目中的 "Property _ does not exist on _ type"D3.js typescript 错误

javascript - 如何从异步调用返回响应?

javascript - 删除括号内的单词

javascript - Parsley.js 验证 4 个字段中的 1 个是否有值

javascript - 当页面通过 ajax 更改时,如何运行 Greasemonkey 脚本?

javascript - Node Js Cli 与 mongoDB