Ich habe oben einen Kommentar abgegeben, in dem ich fragte, warum der Titel geändert wurde, um anzunehmen, dass Regex verwendet werden sollte.
Ich persönlich versuche, Regex nicht zu verwenden, weil es langsam ist. Regex ist großartig für komplexe Zeichenkettenmuster, aber wenn die Ersetzung von Zeichenketten einfach ist und Sie eine gewisse Leistung benötigen, werde ich versuchen, einen Weg zu finden, ohne Regex zu verwenden.
Wir haben einen Test gemacht. Durchführen einer Million Ersetzungen mit Regex und String-Methoden.
Regex nahm 26,5 Sekunden bis zur Fertigstellung, String-Methoden benötigten 8 Sekunden zu vervollständigen.
//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);
0 Stimmen
Warum wurde der Titel so geändert, dass er Regex enthält? Es gibt mehr als eine Möglichkeit, Text zu ersetzen. Ich versuche in der Regel, Regex zu vermeiden, weil es langsam ist. Ich denke also nicht, dass der Titel so bearbeitet werden sollte, dass er die "angenommene" Antwort enthält.
1 Stimmen
@Chris Persichetti: Das ist in Ordnung; ich habe "regex" aus dem Titel entfernt. (Ich hatte es aufgrund der Tags hinzugefügt, aber "regex" gehörte anscheinend ohnehin nicht zu den ursprünglichen Tags.)