2011-09-19 18 views
8

Mam folder z plikami o nazwachJak sprawdzić, czy nazwa pliku zawiera podciąg w C#

  1. myfileone
  2. myfiletwo
  3. myfilethree

Jak mogę sprawdzić, czy plik "myfilethree" jest obecny.

Mam na myśli, że istnieje inna metoda niż metoda IsFileExist(), tj. Jak nazwa pliku zawiera podłańcuch "trzy"?

+2

Jeśli masz rozwiązanie, które działa (np. 'File.Exists'), możesz wyjaśnić więcej o tym, co próbujesz zrobić, co powoduje, że potrzebujesz alternatywnego rozwiązania? –

Odpowiedz

16

podciągu:

bool contains = Directory.EnumerateFiles(path).Any(f => f.Contains("three")); 

Case-niewrażliwy podciąg:

bool contains = Directory.EnumerateFiles(path).Any(f => f.IndexOf("three", StringComparison.OrdinalIgnoreCase) > 0); 

Case-niewrażliwy porównania:

bool contains = Directory.EnumerateFiles(path).Any(f => String.Equals(f, "myfilethree", StringComparison.OrdinalIgnoreCase)); 

nazwy plików Get pasujących do kryteriów wieloznacznych:

IEnumerable<string> files = Directory.EnumerateFiles(path, "three*.*"); // lazy file system lookup 

string[] files = Directory.GetFiles(path, "three*.*"); // not lazy 
+0

To zadziałało. Dzięki Abatischev – sreeprasad

+0

@ SREEPRASADGOVINDANKUTTY Cieszę się, że pomogło :) – abatishchev

+0

Świetna odpowiedź, choć jak to zrobić z 2 list? Mam listę , którą chciałbym porównać. – Robula

3

Jeśli dobrze rozumiem Twoje pytanie, można zrobić coś jak

Directory.GetFiles(directoryPath, "*three*")

lub

Directory.GetFiles(directoryPath).Where(f => f.Contains("three"))

Oba daje wszystkie nazwy wszystkich plików z three w to.

0

Nie jestem zaznajomiony z IO, ale może to zadziała? Wymaga using System.Linq

System.IO.Directory.GetFiles("PATH").Where(s => s.Contains("three")); 

EDIT: Zauważ, że ta zwraca tablicę ciągów.

Powiązane problemy