Answer the question
In order to leave comments, you need to log in
Answer the question
In order to leave comments, you need to log in
With an array of characters, it is probably possible with some expressions, but this is also possible
string str = "PT7M4S";
char[] symbols = { '0','1','2','3','4','5','6','7','8','9' }; //определяем возможные значения времени
int quanMin; //тут храним сколько знаков отводится на минуты
int quanSec; //на секунды
if (str.IndexOfAny(symbols, 3) == 3)// проверяем сколько знаков отводится под минуты
{
quanMin = 2; //если под индексом 3 в строке находится цифра
}
else
{
quanMin = 1; //если под индексом 3 в строке не цифра
}
if (quanMin == 1) // проверяем сколько знаков отводится под секунды с учётом того, сколько отвели под минуты
{
quanSec = str.IndexOfAny(symbols, 5) == 5 ? 2 : 1; //индекс сдвигается, в зависимости от колличества знаков, отведённых под минуты
}
else
{
quanSec = str.IndexOfAny(symbols, 6) == 6 ? 2 : 1;
}
TimeSpan timespan = new TimeSpan(0, int.Parse(str.Substring(2, quanMin)), int.Parse(str.Substring((quanMin == 1 ? 4 : 5), quanSec))); //создаём объект TimeSpan
Console.WriteLine(timespan); //вывод
//=>00:07:04
string str = "PT72M41S";
TimeSpan timeSpan = new TimeSpan(0, int.Parse(str.Substring(2, 2)), int.Parse(str.Substring(5, 2)));
Console.WriteLine(timeSpan); //=> 01:12:41
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question