tôi đã thực hiện một lời nhận xét trên hỏi tại sao tiêu đề được thay đổi để đảm Regex là để được sử dụng.
Cá nhân tôi cố gắng không sử dụng Regex vì nó chậm. Regex là tuyệt vời cho các mẫu chuỗi phức tạp, nhưng nếu thay thế chuỗi là đơn giản và bạn cần một số hiệu suất ra khỏi nó, tôi sẽ cố gắng và tìm một cách mà không cần sử dụng Regex.
Đã cùng nhau thử nghiệm. Chạy một triệu thay thế bằng Regex và các phương thức chuỗi.
Regex mất 26.5 giây để hoàn tất, các phương thức chuỗi mất 8 giây để hoàn tất.
//Using Regex.
Regex r = new Regex(@"\b[Tt]he\b");
System.Diagnostics.Stopwatch stp = System.Diagnostics.Stopwatch.StartNew();
for (int i = 0; i < 1000000; i++)
{
string str = "The man is old. The is the Good. Them is the bad.";
str = r.Replace(str, "@@");
}
stp.Stop();
Console.WriteLine(stp.Elapsed);
//Using String Methods.
stp = System.Diagnostics.Stopwatch.StartNew();
for (int i = 0; i < 1000000; i++)
{
string str = "The man is old. The is the Good. Them is the bad.";
//Remove the The if the stirng starts with The.
if (str.StartsWith("The "))
{
str = str.Remove(0, "The ".Length);
str = str.Insert(0, "@@ ");
}
//Remove references The and the. We can probably
//assume a sentence will not end in the.
str = str.Replace(" The ", " @@ ");
str = str.Replace(" the ", " @@ ");
}
stp.Stop();
Console.WriteLine(stp.Elapsed);
Tại sao tiêu đề chỉnh sửa để bao gồm Regex? Có nhiều cách để thay thế văn bản. Tôi thường cố gắng tránh Regex vì nó chậm vì vậy tôi không nghĩ rằng tiêu đề nên được chỉnh sửa để bao gồm câu trả lời "giả định". – Crispy
@Chris Persichetti: Đủ công bằng; Tôi đã xóa "regex" khỏi tiêu đề. (Tôi đã thêm nó dựa trên các thẻ, nhưng "regex" dường như không phải là một trong các thẻ gốc.) –