Plus simple, oui. Plus léger, on peut pinailler. Trim() te créé un nouvelle chaine, donc nouvelle allocation mémoire + parcours de la chaine sur sa totalité pour découvrir les caractères à supprimer.
Encore une fois, je vais précher pour ma chapelle, mais une boucle dans laquelle tu test la présence des caractères et tu sort dès que tu trouve un caractère non voulu est plus efficace. ;-)
Donc, pour toi, la création d'un tableau (donc une allocation mémoire ?) avec un nombre d'entré égal au nombre de caractères de la chaine (chaine qui peut être tres longue), puis de nombreux tests pour chacun des caractères blanc dans une boucle sur chacune de ces entré de tableau j'usqu'a ce que l'on trouve un caractère autre qu'un caractère blanc, est moin lourd qu'un test IsNullOrEmpty sur une chaine trimé ?
Oui, tu vises juste, ma méthode ne devrait pas créer un nouveau tableau mais plutôt boucler sur les caractères de la string de cette façon:
Si tu fait du .NET 3.0 ou plus, pourquoi ne pas créer une méthode d'extension?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for (int i = 0; i < myString.Length; i++) { char c = myString[i]; }
Et que tu utiliserais de cette façon:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public static class StringUtils { private const string WHITE_SPACES = " "; public static bool ContainsOnlyWhitespaces(this string str) { for (int i = 0; i < str.Length; i++) { if (WHITE_SPACES.IndexOf(str[i]) == -1) { return false; } } return true; } }
Evidement, libre à toi d'utiliser au final la méthode que tu préfères pour déterminer si ta chaine contient uniquement des blancs ;-)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 string myString = " A tester "; if (myString.ContainsOnlyWhitespaces()) { // to do... }
Merci pour ces précisions qui m'aident bien à comprendre le fonctionnement de ce language ^^
Mais bon, j'ai la fleme de faire l'inventaire des caractère blanc, et de faire tout les test qui vont bien...
Puisque ma méthode marche et n'est pas contre indiqué, je vais me contenter de sa simplicité de mise en oeuvre, tant pis si c'est un poil plus lourd ^^
Dans l'absolu, la méthode de neptune est sans doute plus efficace... mais la différence en termes de performance est négligeable.
En fait les méthodes d'extensions c'est à partir de C# 3, donc .NET 3.5Envoyé par neptune
Bin, pas vraiment en fait, puisque le code qui m'est proposé se contente de tester les espace, et pas tout les autres caractères blanc. Donc il faudrais que je me prenne la tête à faire l'inventaire de tout les caractère blanc, puis, que j'écrive tout les test qui corresponde.
C'est l'affaire d'un petit quart d'heure à tout casser, mais bon ^^
Ben il suffit que tu ajoutes les autres caractères blancs dans la chaîne WHITE_SPACES.
D'après la description de ctype_space :
Donc WHITE_SPACES = " \t\v\n\r"Retourne TRUE si tous les caractères de text vont créer des espaces blancs, FALSE sinon. Cela inclut le tabulations, les tabulations verticales, les nouvelles lignes, les retours chariots et les retours à la ligne.
Merci beaucoup, ça m'aide bien à comprendre le principe ^^
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager