簡體   English   中英

如何從變量String解析DateTime SubString

[英]How to parse DateTime SubString out of variable String

我有一個像這樣的字符串:

"WAIT_UNTIL;SYSTEM_TIME >= Di 15 Sep 2009    23:00:21 and IgnKeyPos ==3"

或類似的東西

"IF;Thermal >=20 and SYSTEM_TIME >= Tue 16 Sep 2009    23:00:21 "

我只需要提取時間和日期部分,以便我可以像以后一樣使用它:

TimeThen = DateTime.Parse("Di 15 Sep 2009    23:00:21");

我應該怎么開始?

這將匹配,盡管對預期格式的反饋更多,但可以增強。 目前,它在日期/時間部分之間至少接受1個空格。

string input = "IF;Thermal >=20 and SYSTEM_TIME >= Tue 15 Sep 2009    23:00:21 ";
string pattern = @"[A-Z]+\s+\d+\s+[A-Z]+\s+\d{4}\s+(?:\d+:){2}\d{2}";
Match match = Regex.Match(input, pattern, RegexOptions.IgnoreCase);

if (match.Success)
{
    string result = match.Value;
    DateTime parsedDateTime;
    if (DateTime.TryParse(result, out parsedDateTime))
    {
        // successful parse, date is now in parsedDateTime
        Console.WriteLine(parsedDateTime);
    }
    else
    {
        // parse failed, throw exception
    }
}
else
{
    // match not found, do something, throw exception
}

考慮使用正則表達式

以下是在C#中使用它們的一些信息:

這是一個示例用法

Regex dateTimeRegex = new Regex("\w<=(?<ParsedDateTime>YOUR REGEX GOES HERE)");

if(match.Success && match.Groups["ParsedDateTime"].Success)
{
   string parsedDateTime = match.Groups["ParsedDateTime"].Value;

   // process your parsed value here
}
(?<trash>.*?)<?<arrow>\s\>\=\s)(?<dow>\w{2,3})\s*(?<day>\d{1,2})\s*(?<month>\w{3})\s*(?<time>\d{1,2}\:\d{1,2}\:\d{1,2}).*

像第一個這樣的正則表達式?

private static DateTime ExtractDateTime(string format)
{
    int length = format.Length;
    for (int startIndex = 0; startIndex < length; startIndex++)
    {
        for(int subLength = length - startIndex; subLength > 0; subLength--)
        {
            string substring = format.Substring(startIndex, subLength);
            DateTime result;
            if (DateTime.TryParse(substring, out result))
            {
                return result;
            }
        }
    }
    return DateTime.MinValue;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM