代码之家  ›  专栏  ›  技术社区  ›  user726720

c#字符串到时间码

  •  -1
  • user726720  · 技术社区  · 6 年前

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

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

    如果我给这个方法10秒钟,它应该会给出输出: 00:00:10:00 ,因此,如果minutes/hours/frames为空,则应输入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 回复  |  直到 6 年前
        1
  •  2
  •   RedX    6 年前

    我想你只要在谷歌上搜索一下,就能自己找到答案。

    未回答的问题是,例如,当小时为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);
    
        2
  •  0
  •   Timur Lemeshko    6 年前
    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
    

    如果给字符串参数指定了错误的格式或null,则在输出时它将为0

    推荐文章