J'ai fait un commentaire ci-dessus se demander pourquoi le titre a été changé pour assumer Regex devait être utilisé.
Personnellement, j'essaie de ne pas utiliser Regex parce que c'est lent. Regex est idéal pour les modèles de chaînes complexes, mais si les remplacements de chaînes sont simples et que vous avez besoin de performances, je vais essayer de trouver un moyen sans utiliser Regex.
Jeter ensemble un test. Exécuter un million de remplacements avec des méthodes Regex et chaîne.
Regex a 26,5 secondes pour compléter, les méthodes de chaîne ont 8 secondes pour terminer.
//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);
Pourquoi at-on le titre modifié pour inclure Regex? Il y a plus d'une façon de faire du remplacement de texte. J'essaie généralement d'éviter Regex parce que c'est lent, donc je ne pense pas que le titre aurait dû être édité pour inclure la réponse "assumé". – Crispy
@Chris Persichetti: C'est assez juste; J'ai supprimé "regex" du titre. (Je l'avais ajouté en fonction des balises, mais "regex" n'était apparemment pas l'un des balises originales de toute façon.) –