0

我需要在字符串中搜索和解析日期时间(根据当前文化格式化)。

目前我能想到的最好的是:

string text = String.Format("Time is {0}; all's well", DateTime.Now);
DateTime date = new DateTime();
for (int start = 0; start < text.Length - 1; start++)
    for (int length = text.Length - start; length > 0; length--)
        if (DateTime.TryParse(text.Substring(start, length), out date))
            return date;

有没有更聪明的方法来做到这一点?

4

2 回答 2

0

更好的方法是使用通用分隔符(例如空格和;在您的示例中)拆分字符串,然后尝试解析每个部分(和/或将每两个部分连接在一起)。

如果您知道日期始终位于拆分中的特定位置,则可以消除循环并直接获取日期字符串。

于 2013-06-06T10:34:31.517 回答
0

听起来很难。可能是正则表达式的工作。鉴于你说

根据当前文化格式化

您需要每种文化的正则表达式,并根据文化集选择正确的表达式。

或者,如果您知道周围的文本将是什么,即("Time is {0}; all's well")部分,那么您可以先从字符串中删除它,然后尝试

DateTime.TryParse(dateOnlyString, currentCulture, ...)
于 2013-06-06T10:40:59.693 回答