我的xml持续时间格式为“0H0M0.25S”,其中H,M,S代表小时,月,秒。 现在我希望解析这个字符串并将其分配给整数小时,分钟和双秒。 即
string s="0H0M0.25S";//input
int hour, minute;double second;//variable to assign
有没有办法使用正则表达式实现它,可以一次性分配所有这个变量?
答案 0 :(得分:2)
试试这个:
var result = Regex.Match(s, @"(\d*)H(\d*)M(\d*.\d*)");
hour = int.Parse(result.Groups[1].Value);
minute = int.Parse(result.Groups[2].Value);
second = double.Parse(result.Groups[3].Value);
在解析double时,您可能需要补偿文化。
答案 1 :(得分:1)
或者你可以完全抛弃正则表达式并使用DateTime
:
string datePattern = @"H\Hm\Ms.ff\S";
var date = new DateTime();
if (DateTime.TryParseExact("0H0M0.25S", datePattern, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out date))
{
// Everything you need is in 'date' in just one go :)
int hour = date.Hour;
int minute = date.Minute;
double second = (double)date.Second + ((double)date.Millisecond / 1000);
}
else
{
// Catch invalid datetime string here
}