2010-03-13 22 views

Trả lời

22

Đây là một sửa đổi nhỏ từ: http://msdn.microsoft.com/en-us/library/aa287535%28VS.71%29.aspx

int counter = 0; 
string line; 

// Read the file and display it line by line. 
System.IO.StreamReader file = new System.IO.StreamReader("c:\\test.txt"); 
while((line = file.ReadLine()) != null) 
{ 
    if (line.Contains("word")) 
    { 
     Console.WriteLine (counter.ToString() + ": " + line); 
    } 

    counter++; 
} 

file.Close(); 
+1

nhờ lạc quan :) – Chitresh

+0

Bây giờ bạn có thể hướng dẫn cho tôi làm thế nào tôi có thể xuất cùng vượt trội. tức là dòng và số dòng – Chitresh

+0

Hm ... bạn muốn số dòng trong một ô và dòng thực tế trong một ô khác? Nếu vậy, thay vì phân tách bằng dấu hai chấm ở đó (trên ":"), hãy tách chúng bằng dấu phẩy (",") và sau đó đọc Excel dưới dạng tệp CSV (giá trị được phân tách bằng dấu phẩy). – PeterM

1

Để xuất làm Excel bạn có thể sử dụng định dạng tập tin CSV, giống như người bi quan đã viết. Nếu bạn không chắc chắn về những gì cần viết, hãy thử nhập một số dữ liệu trong MS Excel và nhấp vào tùy chọn "Lưu dưới dạng" trong Trình đơn và chọn CSV làm loại tệp.

Hãy cẩn thận khi viết định dạng tệp CSV như trong một số ngôn ngữ mặc định cho các giá trị tách không phải là dấu phẩy. Ví dụ, ở Bồ Đào Nha, mặc định là dấu phẩy là dấu phân cách thập phân, dấu chấm là dấu phân cách hàng nghìn và dấu chấm phẩy để phân tách các giá trị. Tâm trí văn hóa khi viết điều đó.

Cách khác là sử dụng các tab ngang làm dấu phân cách. Thử nghiệm để viết một chuỗi, nhấn phím TAB và sau đó một chuỗi khác và dán nó vào Microsoft Excel. Nó là dấu phân cách mặc định trong chương trình đó.

Nếu bạn đang sử dụng giải pháp đặc biệt cho vấn đề cụ thể của mình, có thể sử dụng các giải pháp thay thế mà không cần suy nghĩ nhiều. Nếu bạn đang lập trình một cái gì đó để được sử dụng bởi những người khác (hoặc trong môi trường khác), hãy nhớ sự khác biệt về văn hóa cụ thể.

Ồ, tôi vừa mới nhớ: bạn có thể viết Bảng tính bằng XML, bạn có thể làm điều đó chỉ với gói .NET. Tôi đã thực hiện những năm trước đó với C# .NET 2.0

9

Cuối trò chơi trên trò chơi này nhưng đã xảy ra trên bài đăng này và nghĩ rằng tôi sẽ thêm một câu trả lời thay thế.

foreach (var match in File.ReadLines(@"c:\LogFile.txt") 
          .Select((text, index) => new { text, lineNumber = index+ 1 }) 
          .Where(x => x.text.Contains("SEARCHWORD"))) 
{ 
    Console.WriteLine("{0}: {1}", match.lineNumber, match.text); 
} 

này sử dụng:

  • File.ReadLines, loại bỏ sự cần thiết cho một StreamReader, và nó cũng đóng độc đáo với khoản Where LINQ để trả về một tập lọc của dòng từ một tập tin.

  • Quá tải Enumerable.Select trả về chỉ mục của mỗi phần tử, sau đó bạn có thể thêm chỉ số 1 vào để lấy số dòng cho dòng phù hợp.

Sample Input:

just a sample line 
another sample line 
first matching SEARCHWORD line 
not a match 
...here's aSEARCHWORDmatch 
SEARCHWORD123 
asdfasdfasdf 

Output:

3: first matching SEARCHWORD line 
5: ...here's aSEARCHWORDmatch 
6: SEARCHWORD123 
Các vấn đề liên quan