288 votes

Moyen efficace pour supprimer TOUS les espaces de String?

Je suis d'appeler une API REST et la réception de la réponse XML. Elle retourne une liste d'un espace de travail de noms et je suis en train d'écrire un rapide IsExistingWorkspace() méthode. Depuis tous les espaces de travail sont constitués de caractères contigus avec des pas d'espace, je suis en supposant que la meilleure façon de savoir si un espace de travail est dans la liste est de supprimer tous les espaces (y compris les retours à la ligne) et le faire (XML est la chaîne de caractères reçue à partir du web demande):

XML.Contains("<name>" + workspaceName + "</name>");

Je sais qu'il est sensible à la casse et je suis plutôt que. J'ai juste besoin d'un moyen de supprimer tous les espaces dans une chaîne de manière efficace. Je sais RegEx et LINQ peut le faire, mais je suis ouvert à d'autres idées. La plupart du temps simplement préoccupés par la vitesse.

487voto

slandau Points 6710
 Regex.Replace(XML, @"\s+", "")
 

La façon la plus rapide que je connaisse, même si vous avez dit que vous ne vouliez pas utiliser les expressions régulières.

145voto

Henk J Meulekamp Points 526
<p>J’ai un autre moyen sans regexp et semblent faire une assez bonne. C’est une continuation sur Brandon Moretz réponse :<pre><code></code></pre><p>Je l’ai testé dans un test unitaire simple :</p><pre><code></code></pre><p>Les tentatives de 1000000 de la première option (sans regexp) s’exécute en moins puis une seconde (700ms sur ma machine) et le second prend 3,5 secondes.</p></p>

72voto

Mike_K Points 857

Essayez la méthode replace de la chaîne en C #.

 xyz.Replace("  ", string.empty);
 

22voto

BlueChippy Points 1131
<p>Une alternative parce que c’est très très joli  :) - Remarque : <a href="http://stackoverflow.com/a/14591148/449156">Henks réponse</a> est le plus rapide d'entre eux.<pre><code></code></pre><p>Essais boucles de 1 000 000<code></code></p><p>Cette méthode = 1,74 secondes<br>Regex = 2,58 secondes<br> <code></code>(Henks) = 0,82</p></p>

13voto

JHM Points 71
<p>Si vous avez besoin de performances exceptionnelles, vous devriez éviter Linq et RegEx dans ce cas. J’ai fait une analyse comparative du rendement et semble que si vous voulez supprimer les espaces blancs de début et de fin de la chaîne, chaîne. Trim() est votre fonction ultime.<p>Si vous avez besoin supprimer tous les espaces blancs d’une chaîne, la méthode suivante fonctionne plus rapide de tout ce qui a été posté ici :</p><pre><code></code></pre></p>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: