1

我需要转换一个字符串

"UTC - 9:30 hours"

到分钟。

就像是:

var date = "UTC - 9 : 10 hours";
date = date.replace("UTC",'').replace("hours",'').replace(/\s+/g, '');
var hours = parseInt( date.split(":")[0] );
var minutes = parseInt ( date.split(":")[1] || 0 );
var sign = hours / Math.abs(hours);
var totalMinutes = ( hours * 60 ) + ( sign * minutes );

使用任何正则表达式可以有更简单的方法吗?只是好奇。

4

2 回答 2

2

为什么不简单:

var take     = "UTC - 9:30 hours".split(' ')[2].split(':');
var minutes  = parseFloat(take[0])*60 + parseFloat(take[1]);

alert(minutes); // 570

还 :var minutes = Number(take[0])*60 + Number(take[1]);

jsBin 演示

于 2012-07-28T02:26:14.640 回答
1

请耐心等待……这样的事情太琐碎了吗?

string input = "UTC - 9:30 hours";
Match m = Regex.Match(input, @"(?<sign>-?)\s?(?<hours>\d+)\s?:\s?(?<minutes>\d+)");
int sign = m.Groups["sign"].Value == "-" ? -1 : 1;
int hours = int.Parse(m.Groups["hours"].Value);
int minutes = int.Parse(m.Groups["minutes"].Value);
int totalMinutes = (hours * 60 + minutes)*sign;

哦,对不起...你谈到了javascript。我发布了 ac# 代码..那没关系。无论如何,正则表达式仍然有效。

但是要回答您的问题,不,正如您所见,这并不容易。

ps:我用不同的方式处理标志只是因为我没有理解你的意思,并且有很多?运算符只是为了允许更宽松的模式。

于 2012-07-28T01:27:19.403 回答