c # строка для временного кода - PullRequest
0 голосов
/ 15 февраля 2019

Мне нужно создать метод, который может возвращать мне строку, подобную этой

00:00:00:00 hh:mm:ss:fr

Если я передам 10 секунд методу, он должен дать вывод: 00:00:10:00, поэтому, если минуты / часы / кадры равны нулю, в этом примере следует ввести 00.as.

public static string ToTimeCode(string hours, string minutes, string seconds, string frames)
    {
      string timeCodeString

       // should I do some IF loops here to check for nulls and build the timecode string

      return timeCodeString;
    }

Возможно ли это с помощью регулярных выражений.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019
using System;

namespace ConsoleApp26
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(ToTimeCode(null,null,"10",null));
            Console.WriteLine(ToTimeCode("1", "2", "3", "4"));

            Console.WriteLine(ToTimeCode2(null, null, "10", null));
            Console.WriteLine(ToTimeCode2("1", "2", "3", "4"));

            Console.ReadLine(); 
        }

        public static string ToTimeCode(string hours, string minutes, string seconds, string frames)
        {
            int.TryParse(hours, out int hoursInt);
            int.TryParse(minutes, out int minutesInt);
            int.TryParse(seconds, out int secondsInt);
            int.TryParse(frames, out int framesInt);
            var timespan = new TimeSpan(hoursInt, minutesInt, secondsInt, framesInt);
            return timespan.ToString("g");
        }

        public static string ToTimeCode2(string hours, string minutes, string seconds, string frames)
        {
            int.TryParse(hours, out int hoursInt);
            int.TryParse(minutes, out int minutesInt);
            int.TryParse(seconds, out int secondsInt);
            int.TryParse(frames, out int framesInt);
            var timespan = new TimeSpan(hoursInt, minutesInt, secondsInt, framesInt);
            return timespan.ToString(@"dd\.hh\:mm\:ss");
        }
    }
}

Вывод:

0:10:00
1:2:03:04
00.00:10:00
01.02:03:04

Если вы зададите неправильный формат или ноль для строковых параметров, он будет равен 0 на выходе

0 голосов
/ 15 февраля 2019

Я думаю, что, немного погуглив, вы могли бы найти ответ сами.

Вопрос без ответа: когда, например, час равен 0, вы получаете 00 в строке?Или это ноль?Предполагая, что все идет так, как вы ожидаете, вы можете просто интерполировать строку:

return $"{hour ?? "00"}:{minute ?? "00"}:{second ?? "00"}:{frames ?? "00"}";

Простая (и неэффективная) версия C # 5.0, запрошенная в комментариях, может быть:

return 
   (hour == null ? "00" : hour)
   + ":"
   + (minute == null ? "00" : minute)
   + ":"
   + (second == null ? "00" : second)
   + ":"
   + (frames == null ? "00" : frames);
...