我是javaScript的新手,在处理一个简单的项目时,我遇到了这个问题。我有一个字符串,
var str = "11 hrs and 34 mins";
我只希望时间格式如11:34
所以我现在正在做的就像这样
var str = "11 hrs and 34 mins";
var time="";
var parts=str.split(" ");
for(var i=0;i<parts.length;i++){
if(parseInt((parts[i].trim()), 10)){
time+=parts[i]+" ";
}
}
console.log(time);
使用外部库或纯javaScript是否有更好的方法。 有人可以帮助我。
答案 0 :(得分:3)
使用正则表达式将数字^([0-1][1-9]|[2][1-3]).+([0-5][0-9]).+
与确切时间(0-23小时和分钟0-59)匹配:
var str = "11 hrs and 34 mins";
var time="";
var parts=str.match(/^([0-1][1-9]|[2][1-3]).+([0-5][0-9]).+/);
document.getElementById("res").innerHTML = parts[1] + " : " + parts[2];
console.log(parts[1] + " : " + parts[2]);
<span id="res"></span>
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以使用以下正则表达式来提取时间值
/(\d+).+(\d+).+/
示例:
'11 hrs and 34 mins'.replace(/(\d+).+(\d+).+/, '$1:$2')
结果:'11:34'
或者您可以使用外部图书馆,例如Moment.js
答案 3 :(得分:0)
试试这个:
"11 hrs and 34 mins".replace(/.*?(\d+)\s*hrs.*?(\d+)\s*min.*/,"$1:$2")
答案 4 :(得分:0)
试试这个:
var str = "11 hrs and 34 mins";
var time= str.match(/\d+/g);
time = time.join(':');
console.log(time);
答案 5 :(得分:0)
尝试使用正则表达式。更多信息here
var timePattern = /\b\d+\b/g;
var extractedTime = "11 hrs and 34 mins".match(timePattern)
提取的时间应该具有这些值[“11”,“34”],所以你已经拆分这个数组以获得小时和分钟并将它们放在一起。