[英]C# Regex Pattern to remove all in a List
我有一個包含許多項目的字符串列表,其中一些以日期/時間開頭,格式如下:
2016-05-04 18:46:05.115 Copyright (c) 2014 Microsoft Corporation
我希望循環並從列表中包含該格式的所有項目中刪除該日期/時間。
目前我有這個:
var regexDateTime = "/^(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})$/";
preperationMessages = preperationMessages
.Select(x => Regex.Replace(x, regexDateTime, ""))
.ToList();
它根本沒有過濾掉任何日期。 任何幫助,將不勝感激。 謝謝!
使用這個正則表達式:
var regex = @"^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})\.(\d{3})";
你的正則表達式的問題是最后的'$',它意味着字符串結束而不是你想要的。 另外一點是,你不要在csharp中使用正則表達式的開頭和結尾處的斜杠,就像在javascript中一樣。
如果您不想使用RegEx,這也有效(根據您的郵件集合的大小,這可能會更快:
int dateChars = 23;
DateTime output;
// Remove leading date(s)
preparationMessages = preparationMessages
.Select(x => x.Length > dateChars && DateTime.TryParse(x.Substring(0, dateChars), out output) ? x.Substring(dateChars+1) : x)
.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.