将字符串转换为int并忽略冒号

时间:2011-12-19 17:48:09

标签: javascript string

我想将两个字符串转换为int以便能够比较它们。

字符串是计时器,所以我基本上想要转换如下:

timer1 = 00:00:14 // 14
timer2 = 00:00:25 // 25

5 个答案:

答案 0 :(得分:1)

以下代码段通过匹配:所有出现的正则表达式删除所有分号,并使用parseInt将其转换为数字。如果字符串timer1无效,则NaN将成为结果。

numeric_timer1 = parseInt(timer1.replace(/:/g, ""), 10)

这满足了“将字符串转换为int并忽略冒号”的字面请求。

如果您有兴趣将hour:minute:seconds转换为秒,请使用timer1.split(":")方法拆分字符串并应用数学。

答案 1 :(得分:1)

第一步是删除冒号:

var str1 = "00:00:14";
str1 = str1.replace (/:/g, "");

第二步是取剩余数字并将其变成一个数字。对于像“000014”这样的字符串,parseInt将返回0,因此您可以使用parseFloat:

var result = parseFloat(str1);
祝你好运!

更新:我没有考虑基础10问题......如果您只是想比较哪个时间更长,但是要对真实的次进行更“适当”的比较您可能希望先将两者都转换为正式Date个对象。

答案 2 :(得分:1)

您可以这样做:

var s = '00:01:05';
var seg = s.split(':');
var hours = parseInt(seg[0]);
var minutes = parseInt(seg[1]);
var seconds = parseInt(seg[2]);

var total = (hours * 3600) + (minutes * 60) + seconds;
window.alert(total);

答案 3 :(得分:1)

尝试使用regexps和隐式字符串 - >数字转换(例如“7”* 1 = 7)

function timeToSeconds(s)
{
   var m =  s.match(/(\d{2}):(\d{2}):(\d{2})/);
   /* capture time fields in HH:MM:SS format */
   if (m == null)
      return null;
   else
      return m[1]*3600 + m[2]*60 + m[3]*1;
}

答案 4 :(得分:0)

您可以将这些字符串作为字符串进行比较,如果这些字段确实始终是2位数段,那么事情应该可以正常工作。