2009-10-25 6 views
1

Je dois remplacer tous System.Environment.Newline(s) dans la chaîne retournée par ma fonction avec System.Environment.Newline + \t (comme j'essaye d'appliquer indenting) et j'ai besoin de faire ceci plusieurs fois.Regex.Replace, String.Replace ou StringBuilder.Replace qui est le plus rapide?

Ma question est la suivante: quel est le moyen le plus efficace de le faire? Je sais que StringBuilder est plus rapide que String.Replace mais je ne sais pas Regex.Replace.

+1

Déjà repères par Debugging Toolbox http://blogs.msdn.com/debuggingtoolbox/archive/2008/04/02/comparing-regex-replace-string-replace-and-stringbuilder-replace-which-has-better- performance.aspx –

+0

Merci Shay en raison de la référence sting.replace est le meilleur. PS: si quelqu'un veut lire l'article, je suggère de lire tous les commentaires car ils n'ont pas fait un test correct à la première place. – Asha

Répondre

14

Si vous essayez simplement de le faire dans une seule chaîne, je m'attendrais string.Replace être aussi rapide que toute autre chose. StringBuilder est utile lorsque vous souhaitez effectuer un nombre de séparer les étapes et que vous souhaitez éviter de créer une chaîne intermédiaire à chaque étape.

Avez-vous référencé string.Replace pour savoir si elle est assez rapide pour vous?

Personnellement, je ne commencerais à utiliser des expressions régulières que lorsque j'utiliserais un motif, plutôt qu'une séquence fixe de caractères. Si la performance de ce système est absolument cruciale, vous pouvez également évaluer cela bien sûr.

3

Compilé Regex sera plus rapide, cependant, à moins que la chaîne soit massive et qu'elle soit exécutée sur une myriade de chaînes, String.Replace() est le chemin à parcourir pour des raisons de lisibilité.

Questions connexes