[英]Extract DateTime from string
當循環遍歷 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";
預期的結果是
2/19/2019 下午 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));
}
最后,我在發布這個問題時查看了推薦的問題,並且幾乎沒有創建正則表達式的專業知識。 我感謝任何建議和/或代碼示例讓我朝着正確的方向前進。
您可以使用
\b\d{1,2}/\d{1,2}/\d{4}\s\d{1,2}:\d{2}:\d{2}\s?[AP]M\b
請參閱正則表達式演示。 Regex.Match
將為您提供第一場比賽。
細節
\\b
- 詞邊界\\d{1,2}/\\d{1,2}/\\d{4}
- 一位或兩位數字, /
,一位或兩位數字, /
,四位數字\\s
- 一個空格\\d{1,2}:\\d{2}:\\d{2}
- 1 或 2 位數字, :
, 2 位數字, :
, 2 位數字\\s?
- 一個可選的空格[AP]M
- AM
或PM
\\b
- 字邊界。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.