【问题标题】:Searching for a Culture-Dependant Date in String在字符串中搜索与文化相关的日期
【发布时间】:2013-06-06 10:23:22
【问题描述】:

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

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

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;

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

【问题讨论】:

  • 您对要在其中查找的字符串了解更多信息吗?还是应该是任意字符串?
  • 如果不了解字符串的结构以及日期时间在其中的显示方式,我们就没有什么可做的了。你的意思是总是作为例子(“时间是......”)?

标签: c# culture


【解决方案1】:

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

如果你知道日期总是在split中的特定位置,你可以消除循环,直接获取日期字符串。

【讨论】:

    【解决方案2】:

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

    根据当前文化格式化

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

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

    DateTime.TryParse(dateOnlyString, currentCulture, ...)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 2021-03-14
      相关资源
      最近更新 更多