Dizelerimin bir listesi (aslında dosya adları) ve yalnızca bir filtre ifadesiyle eşleşenleri tutmak istiyorum: \*_Test.txt
.Bir desenle eşleşen dizelerin bir süzgeci nasıl filtrelenir
Bunu başarmak için en iyi ne olurdu?
List<string> resultList = files.Where(x => x.EndsWith("_Test.txt")).ToList();
veya bazı eski/eski .NET sürümü bu çalıştırıyorsanız (:
List<string> files = new List<string>();
files.Add("MyFile1.csv");
files.Add("MyFile1_Test.txt");
files.Add("MyFile2.csv");
files.Add("MyFile2_Test.txt");
files.Add("MyFile3.csv");
files.Add("MyFile3_Test.txt");
files.Add("MyFile_Testtxttxt.txt");
// Define a filter
string filter = "*_Test.txt";
// Make the filter regex safe
foreach (char x in @"\+?|{[()^$.#")
filter = filter.Replace(x.ToString(), @"\" + x.ToString());
filter = string.Format("^{0}$",filter.Replace("*", ".*"));
// Old School
List<string> resultList1 = files.FindAll(delegate(string s) { return Regex.IsMatch(s, filter, RegexOptions.IgnoreCase); });
// Version using LINQ
List<string> resultList2 = files.Where(x => Regex.IsMatch(x, filter, RegexOptions.IgnoreCase) == true).ToList();
\ * .t \ * veya herhangi bir sayıda kombinasyon . \ * 'Yi kaldırmak bana kısmi eşleşme vermez. – TeamWild
Eeep, cevabım için bir düzeltme dizgisini değiştirmeniz gerekiyor. '' ("^ {0} $") 'ya dönüştüğünde, aksi takdirde' 'fish_Test.txtWIBBLE '' ' –