Найти значение внутри строки - PullRequest
2 голосов
/ 25 ноября 2011

Мне нужно найти значения внутри этой строки:

10days25hours15minutes

Мне нужно получить количество дней, часов и минут, но строка может измениться следующим образом:

10d25h15m

Ответы [ 4 ]

6 голосов
/ 25 ноября 2011

Вы можете использовать это регулярное выражение:

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

, что соответствует 10days25hours15minutes и 10d25h15m.(а также другие)

Возможно, вы захотите сделать его более точным в соответствии с вашими потребностями.

Пример кода:

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"]);
}
4 голосов
/ 25 ноября 2011

Предполагая, что входная строка состоит из трех десятичных чисел, каждое из которых оканчивается одной или несколькими нецифрами, вы можете использовать следующее регулярное выражение:

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}
1 голос
/ 25 ноября 2011
Regex.Match(str, @"(?<days>[0-9]+)(d|days)
                   (?<hours>[0-9]+)(h|hours)
                   (?<minutes>[0-9]+)(m|minutes)");

Затем получите значения, используя match.Groups["days"].Value, match.Groups["hours"].Value, match.Groups["minutes"].Value.

0 голосов
/ 26 ноября 2011
Text.Split(new string[]
    {"days", "hours", "minutes"},StringSplitOptions.RemoveEmptyEntries)

Или

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

верните ваш порядковый номер ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...