在字符串中查找值

时间:2011-11-25 19:45:56

标签: c# string

我需要在这个字符串中找到值:

10days25hours15minutes

我需要获取天数,小时数和分钟数,但字符串可以更改,如下所示:

10d25h15m

4 个答案:

答案 0 :(得分:6)

您可以使用this正则表达式:

(?<days>\d+)d\D*(?<hours>\d+)h\D*(?<minutes>\d+)m\D*

匹配 10days25hours15minutes10d25h15m。 (以及其他人)

您可能希望根据自己的需要使其更准确。

示例代码:

var match = System.Text.RegularExpressions.Regex.Match("10days25hours15minutes", @"(?<days>\d+)d\D*(?<hours>\d+)h\D*(?<minutes>\d+)m\D*", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
if (match.Success)
{
    Console.WriteLine("Days: {0} Hours: {1} Minutes: {2}", match.Groups["days"], match.Groups["hours"], match.Groups["minutes"]);
}

答案 1 :(得分:4)

假设输入字符串由三个十进制数组成,每个十进制数以一个或多个非数字结尾,则可以使用以下正则表达式:

var match = Regex.Match("10days25hours15minutes", @"(\d+)\D+(\d+)\D+(\d+)\D+");

var result = new TimeSpan(
    days: int.Parse(match.Groups[1].Value),
    hours: int.Parse(match.Groups[2].Value),
    minutes: int.Parse(match.Groups[3].Value),
    seconds: 0);

// result == {11.01:15:00}

答案 2 :(得分:1)

Regex.Match(str, @"(?<days>[0-9]+)(d|days)
                   (?<hours>[0-9]+)(h|hours)
                   (?<minutes>[0-9]+)(m|minutes)");

然后使用match.Groups["days"].Valuematch.Groups["hours"].Valuematch.Groups["minutes"].Value检索值。

答案 3 :(得分:0)

Text.Split(new string[]
    {"days", "hours", "minutes"},StringSplitOptions.RemoveEmptyEntries)

或者

Text.Split(new string[]{"d", "h", "m"},StringSplitOptions.RemoveEmptyEntries)

尽快归还你的号码......