JavaScript将分钟和秒转换为秒数

3

我从一个页面获取了一个字符串,格式为“4m 26s”,如何将其转换为只有秒数?

非常感谢。


1
你想要什么结果:26秒还是266秒 - Alan Moore
寻找266,就像4*60+26一样。 - Pez Cuckow
4个回答

3
简单的正则表达式就可以解决问题:
var s = '21m 06s';

var m = /(\d{1,2})m\s(\d{1,2})s/.exec(s);

var mins = parseInt(m[1], 10);
var secs = parseInt(m[2], 10);

这是一个愚蠢的评论;从技术上讲,你可以说正则表达式总是不必要的。它按照请求解决了问题。我可以给你的答案点个踩,说使用分割是不必要的。 - Evan Trimboli
不,这里正则表达式很慢,难以阅读和维护,因此过于复杂化了问题。你应该在有充分理由时使用正则表达式。你本可以编辑你的代码,但你却选择与我争论。 - gblazex
慢?能用一些数字来支持吗?我认为你会发现在性能方面几乎没有什么区别。更难阅读和更难维护是主观的,特别是因为这是一个小而易读的正则表达式。仅仅因为你不熟悉它,就不能说它很复杂。再次,愚蠢的评论。 - Evan Trimboli
为什么难以承认有更好的方法?这种情况发生在每个人身上……“让事情变得更大很容易,让事情变得更好很难……” - gblazex
我喜欢你忽略了我说的一切。干得好 ;) - Evan Trimboli

2
var str = "4m 26s";
var arr = str.split(" ");
var sec = parseInt(arr[0], 10)*60 + parseInt(arr[1], 10);

如果您使用parseInt,就不需要正则表达式...


2

一种非正则表达式的方法:

对字符串进行string.split(" ")操作;然后对两个数组都进行string.slice(0, -1)操作。将第一个条目乘以60,然后将它们相加。


0
var str = "4m 26s";
console.log(str.match(/\d+m\s+(\d+)s/)[1]);//26

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接