IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Tester si une chaine ne contient que des caractères blanc


Sujet :

ASP.NET

  1. #21
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par Assimil Voir le message
    je suis conscient que le trim modifie la chaine
    Non, Trim renvoie une chaîne trimmée mais ne modifie pas la chaîne originale

  2. #22
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Non, Trim renvoie une chaîne trimmée mais ne modifie pas la chaîne originale
    Merci pour cette précision !

  3. #23
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Non, Trim renvoie une chaîne trimmée mais ne modifie pas la chaîne originale
    Oups, désolé pour cette ineptie... ;-)

  4. #24
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par neptune Voir le message
    Oups, désolé pour cette ineptie... ;-)
    Je croyais comme toi ^^

    Bon, alors, elle vaut quoi ma solution dans ce cas ?

  5. #25
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par Assimil Voir le message
    Je croyais comme toi ^^

    Bon, alors, elle vaut quoi ma solution dans ce cas ?
    avec Trim et IsNullOrEmpty ça me semble pas mal

  6. #26
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par tomlev Voir le message
    avec Trim et IsNullOrEmpty ça me semble pas mal
    Ok, si il n'y a aucune contre indication, ça m'arrange ! c'est plus simple que de faire une fonction dédié pour ça, et sans doute plus léger...

  7. #27
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    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. ;-)

  8. #28
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par neptune Voir le message
    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é ?

  9. #29
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    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:

    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];
    }
    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
    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;
    	}
    }
    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
     
    string myString = "  A tester   ";
     
    if (myString.ContainsOnlyWhitespaces())
    {
        // to do...
    }
    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 ;-)

  10. #30
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Points : 56
    Points
    56
    Par défaut
    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 ^^

  11. #31
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Dans l'absolu, la méthode de neptune est sans doute plus efficace... mais la différence en termes de performance est négligeable.

    Citation Envoyé par neptune
    Si tu fait du .NET 3.0 ou plus, pourquoi ne pas créer une méthode d'extension?
    En fait les méthodes d'extensions c'est à partir de C# 3, donc .NET 3.5

  12. #32
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Dans l'absolu, la méthode de neptune est sans doute plus efficace...
    C'est ce que j'avais cru comprendre.

    Mais ça prend plus de temps à coder aussi ^^

  13. #33
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par Assimil Voir le message
    C'est ce que j'avais cru comprendre.

    Mais ça prend plus de temps à coder aussi ^^
    ben là il suffit de copier/coller

  14. #34
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par tomlev Voir le message
    ben là il suffit de copier/coller
    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 ^^

  15. #35
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    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 :
    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.
    Donc WHITE_SPACES = " \t\v\n\r"

  16. #36
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Points : 56
    Points
    56
    Par défaut
    Merci beaucoup, ça m'aide bien à comprendre le principe ^^

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Vérifier qu'une variable ne contient QUE des chiffres ?
    Par Zebulon777 dans le forum Général JavaScript
    Réponses: 26
    Dernier message: 30/09/2010, 13h47
  2. Réponses: 8
    Dernier message: 08/05/2009, 16h54
  3. savoir si une chaine ne comporte que des lettres
    Par kamouminator dans le forum C
    Réponses: 22
    Dernier message: 16/11/2006, 03h19
  4. Réponses: 4
    Dernier message: 20/02/2006, 01h33
  5. Réponses: 20
    Dernier message: 07/12/2005, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo