1

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

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;
    }

这可能与正则表达式。

4

2 回答 2

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);
于 2019-02-15T10:26:56.067 回答
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

如果你给字符串参数提供错误的格式或空值,它会在输出中为 0

于 2019-02-15T10:31:12.160 回答