我需要构建一个可以像这样返回字符串的方法
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;
}
使用正则表达式可以做到这一点。
答案 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