【发布时间】:2020-03-27 19:51:51
【问题描述】:
当循环遍历 List<string> 中的元素时,我想提取第一个 日期时间。
这是一个示例行,在这种情况下,月份是一位数,月份也可以是两位数,例如12 但不说 01。
string line = "\\\\SomeServer\\HTTP\\demo1\\index.cfm 4 KB CFM " +
"File 2/19/2019 3:48:21 PM " +
"2/19/2019 1:05:53 PM 2/19/2019 1:05:53 PM 5";
预期的结果是
2019 年 2 月 19 日下午 3:48:21
我在这里查看了各种正则表达式代码示例,以下是仅正确处理单个数字月份并且不返回日期的时间部分的示例(因为我不知道要使用什么模式)。
var line = "\\\\SomeServer\\HTTP\\FolderName\\index.cfm 4 KB CFM " +
"File 02/19/2019 3:48:21 PM " +
"2/19/2019 1:05:53 PM 2/19/2019 1:05:53 PM 5";
var match = Regex.Match(line,
@"\d{2}\/\d{2}\/\d{4}");
var dateValue = match.Value;
if (!string.IsNullOrWhiteSpace(dateValue))
{
var dateTime = DateTime.ParseExact(dateValue,
"MM/dd/yyyy",
CultureInfo.CurrentCulture);
Console.WriteLine(
dateTime.ToString(CultureInfo.InvariantCulture));
}
最后,我在发布此问题时查看了推荐的问题精简版,并且几乎没有创建正则表达式的专业知识。我感谢任何建议和/或代码示例,让我朝着正确的方向前进。
【问题讨论】:
-
请注意,当您将解析该字符串时,我想
DateTime.ParseExact(dateTime, "MM/dd/yyyy H:m:s tt", CultureInfo.CurrrentCulture);,如果当前文化是非英语,它将失败。CultureInfo.InvariantCulture在任何情况下都可以使用。 -
@Jimi,谢谢,我已将解析更改为 ``` if (DateTime.TryParse(dateValue, out lineDateTime)) ``` 异常使用 out var 但这是一个冗长的解析方法.
标签: c# regex datetime find extract