如何使用正则表达式从字符串中解析时间(小时,分钟)?

时间:2014-11-24 15:50:16

标签: c# regex

我需要解析一个字符串才能获得有效时间(小时和秒)。

以下是源数据的示例:

7:00-7:30
7:30-8:00
8:00-8:30
...
19:30-20:00

我只需要第一次的价值。 所以对于第一线,我需要得到“7:00”。 此外,小时部分可以有一个或两个数字(7:00 / 20:00)。

有任何想法吗?

3 个答案:

答案 0 :(得分:1)

你不需要正则表达式。只需将它拆分为-,它将返回一个数组,其中0索引处的第一个元素将包含您想要的内容。

string date = "7:00-7:30"; bool val = date.IndexOf("-") > -1;
var splitter = val ? "-" : ":";
var arr = date.Split(splitter);
var firstpart = val ? arr[0] : arr[0] + ':' + arr[1];

答案 1 :(得分:1)

你想要Timespan吗?

 var str = "7:00-7:30";
 var time = TimeSpan.Parse(str.Split('-')[0]);

如果没有,你可以使用

 var hours = str.Split('-')[0].Split(':')[0];
 var minutes = str.Split('-')[0].Split(':')[1];

您要查找的数据在行与行之间不变,因此这里不一定需要正则表达式。

答案 2 :(得分:0)

您可以使用

形式的正则表达式
^(?:1?[0-9]|2[0-3]):[0-6][0-9]

例如:http://regex101.com/r/fM3kL7/1

var re = /^(?:1?[0-9]|2[0-3]):[0-6][0-9]/gm;
var str = '7:00-7:30\n7:30-8:00\n8:00-8:30\n...\n19:30-20:00';
var res = str.match(re);

将输出

7:00,7:30,8:00,19:30