2011-09-19 30 views
8

Tôi đã một thư mục với tập tin có tênLàm thế nào để kiểm tra xem tên tập tin chứa chuỗi trong C#

  1. myfileone
  2. myfiletwo
  3. myfilethree

Làm thế nào tôi có thể kiểm tra nếu tập tin "myfilethree" là hiện tại.

Tôi có nghĩa là có một phương pháp khác ngoài phương pháp IsFileExist(), ví dụ như tên tệp chứa chuỗi con "ba"?

+2

Nếu bạn có giải pháp hoạt động (ví dụ: 'File.Exists'), bạn có thể giải thích thêm về những gì bạn đang cố gắng làm điều đó khiến bạn cần giải pháp thay thế không? –

Trả lời

16

xâu:

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

case-insensitive chuỗi:

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

case-insensitive so sánh:

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

tên tập tin Nhận phù hợp với một tiêu chí wildcard:

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

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

Điều này đã hiệu quả. Cảm ơn Abatischev – sreeprasad

+0

@SREEPRASADGOVINDANKUTTY Vui vì nó đã giúp :) – abatishchev

+0

Câu trả lời tuyệt vời, mặc dù làm thế nào tôi sẽ làm điều này với 2 danh sách? Tôi có một Danh sách mà tôi muốn so sánh. – Robula

3

Nếu tôi hiểu câu hỏi của bạn một cách chính xác, bạn có thể làm một cái gì đó giống như

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

hoặc

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

Cả hai sẽ cung cấp cho bạn tất cả các tên của tất cả các file với three trong nó.

0

Tôi không quen thuộc với IO nhưng có lẽ điều này sẽ làm việc? Yêu cầu using System.Linq

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

EDIT: Lưu ý rằng điều này trả về mảng chuỗi.

Các vấn đề liên quan