Tôi yêu cầu trợ giúp tìm kiếm tệp văn bản (tệp nhật ký) bằng C# và hiển thị số dòng và dòng đầy đủ chứa từ khóa tìm kiếm .tìm kiếm tập tin văn bản bằng cách sử dụng C# và hiển thị số dòng và dòng hoàn chỉnh chứa từ khóa tìm kiếm
Trả lời
Đâ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();
Để 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
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ảnWhere
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
nhờ lạc quan :) – Chitresh
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
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