C#字符串到时间码

时间:2019-02-15 10:13:30

标签: c# regex timecodes

我需要构建一个可以像这样返回字符串的方法

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

如果我将10秒钟传递给该方法,它应该给出输出:00:00:10:00,因此,如果分钟/小时/帧为空,则应输入00。如本例所示。

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 :(得分:2)

我认为只要稍加搜查就可以自己找到答案。

悬而未决的问题是,例如当小时为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);

答案 1 :(得分:0)

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

如果u给出错误的格式或字符串参数为null,则输出为0