0

「0H0M0.25S」の形式のxml期間があります。ここで、H、M、Sは時間、月、秒を表します。ここで、この文字列を解析して、整数の時、分、および倍秒に割り当てたいと思います。すなわち

string s="0H0M0.25S";//input
int hour, minute;double second;//variable to assign

このすべての変数を一度に割り当てることができる正規表現を使用してそれを実現する方法はありますか?

4

2 に答える 2

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

二重に解析している間、文化を補う必要があるかもしれません。

于 2012-07-12T04:11:46.340 に答える
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
    }
于 2012-07-12T04:47:02.830 に答える