Я бы хотел проанализировать строку промежутка времени, содержащую спецификаторы формата, в TimeSpan . Например: "2h 57m 43s"
. h, m и s - все спецификаторы формата. См. Пользовательские строки формата TimeSpan - .NET | Документы Microsoft для получения дополнительной информации.
Согласно документам :
Любой другой неэкранированный символ в строке формата, включая символ пробела, интерпретируется как спецификатор пользовательского формата. В большинстве случаев присутствие любого другого неэкранированного символа приводит к исключению FormatException.
Существует два способа включить буквенный символ в строку формата:
Заключите его в одинарные кавычки (буквенный разделитель строк).
За ним следует обратная косая черта ("\"), которая интерпретируется как escape-символ. Это означает, что в C # строка формата должна либо заключаться в кавычки, либо буквальному символу должен предшествовать дополнительный обратный слеш.
Я пробовал: "hh'h 'mm'm 'ss's'"
и @"hh\h mm\m ss\s"
без удачи.
TimeSpan tracker;
if (TimeSpan.TryParseExact("2h 57m 43s", @"hh\h mm\m ss\s", null, out tracker))
{
Console.WriteLine(tracker);
}
else
{
Console.WriteLine("fail");
}
Это всегда терпит неудачу. Я ожидаю TimeSpan 02:57:43
. В настоящее время я работаю над этой проблемой, используя Regex, но хотел бы знать, как я могу проанализировать эту строку, используя TryParseExact?