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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut Tester si une chaine ne contient que des caractères blanc
    Bonjour,

    Voilà, je souhaiterais savoir si il existe une fonction ou une technique en C# pour tester si une chaine ne contien que des caratères "blanc" (espaces, tabulations, saut de lignes...)

    En php, j'utilisait ctype_space, mais je n'arrive pas à trouver l'équivalent en c#

    Merci d'avance pour votre aide !

  2. #2
    Membre émérite 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
    Par défaut
    Deux possibilités parmis tant d'autres...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    string toTest = "blabla";
    bool result:
     
    // 2.0
    result = Array.TrueForAll(toTest.ToCharArray(), delegate(char c)
    {
        return c == ' ';
    });
     
    // 3.5
    result = toTest.ToCharArray().All(c => c == ' ');

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Merci beaucoup pour ta réponse rapide, mais je ne comprend pas ta syntaxe...

    Pourrais tu me l'expliquer STP ?

    Excuse moi, je débute en c# ^^

    Sinon, le C# n'a pas directement une fonction pour faire ça ?

    Et dans la même veine, je cherche aussi un équivalent de la fonction php trim, avec les même fonctionnalité (je sais, j'en demande beaucoup ^^)

    Merci pour ton aide (et d'avance aussi à tout les autres qui pourrais m'aider là dessus ^^)

  4. #4
    Membre émérite 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
    Par défaut
    Je l'ai un peu fait exprès, à vrai dire. Mon but était de vérifier si tu faisais une recherche un peu par toi même... Ce qui n'est apparement pas le cas.

    http://msdn.microsoft.com/en-us/libr...rs(VS.71).aspx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    result = Array.TrueForAll(toTest.ToCharArray(), delegate(char c)
    {
        return c == ' ';
    });
    Est l'équivalent de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    bool result = true;
    foreach (char c in toTest.ToCharArray())
    {
        if (c != ' ')
        {
            result = false;
            break;
        }
    }

  5. #5
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaChaine.Trim() + surcharges éventuelles...
    Avant de te lancer dans le c# est-ce que tu as des notions de programmation orientée objet ?

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Citation Envoyé par Pongten Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string.Trim() + surcharges éventuelles...
    Avant de te lancer dans le c# est-ce que tu as des notions de programmation orientée objet ?
    Oui, mais seulement des "notion" puisque je n'ai jamais fait de l'OO qu'avec PHP 5 ^^

    Je n'avais pas remarqué que les variables était aussi considéré comme des objet en C#, je te remerci, ça m'aide beaucoup.

    Citation Envoyé par neptune Voir le message
    Je l'ai un peu fait exprès, à vrai dire. Mon but était de vérifier si tu faisais une recherche un peu par toi même... Ce qui n'est apparement pas le cas.
    Personnelement je n'ai jamais fait que du PHP. c'est le seul language de programation que je connais, alors c'est un peut dure pour moi de me mettre au C#, la logique n'a rien a voire, à tel point que j'ai beaucoup de mal à faire des recherche quand j'ai un probleme : le manuel n'est pas organisé, ni rédigé pareil, et certain terme pour des choses identiques difères..

    Résultat, à logique diférentes, techniques de recherche diférentes... En effet, je ne suis pas encore autonome pour ce qui est des recherches quand j'ai un probleme en C#, car la plupart de mes recherches sont innéficaces et tombent à coté.

    Par contre, on ne peut pas vraiment dire que je ne fait pas de recherche par moi même... j'y passe des heure particulièrement frustrantes à cause de mon innéficacité !

    Ca ira mieux quand je cernerais mieux la logique global de ce language.

    Pour finir, je suis un peut perplexe, par ce que je ne voix pas comment là page de man que tu me fournit aurrais put m'aider sur ta syntaxe...

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Bon, tu me repproche de pas faire de recherche, mais de 2 choses l'une

    Soit tu n'as pas lu correctement ma question ce qui serait quand même un comble

    Soit je suis vraiment débile et je ne comprend pas ton code.

    Comme je penche pour la deuxieme solution, je vais t'expliquer ce que j'ai compris de ton code, et pourquoi je n'ai pas l'impression que ça correspond à ce que je recherche.

    Comme je le disait dans mon message, je cherche une fonction qui fasse l'équivalent de la fonction php "ctype_space". Comme j'ai donné le lien vers la page de man dans mon sujet, même pas besoin de faire une recheche.

    Cette fonction teste si la chaine n'est composé que de caractère blanc, à savoir, de manière non exaustive, espaces, tabulations, saut de lignes...

    Ce que j'ai compris de ton code, c'est qu'il teste si la chaine contien un espace.

    Personnelement, je me moque que la chaine contienne un espace, ce que je veux c'est être sur que il y a au moin 1 caractere affichable dedans...

    Qu'est-je mal compris ?

    Merci d'avance pour votre aide ^^

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 111
    Par défaut
    bon je veux pas m'avancer mais utiliser les expressions régulières ne serait il pas judicieux pour vérifier qu'il n'y a que des caractères d'espacement

    ca donne quelquechose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Regex emptyStringPattern=new Regex("^\s*$");
    string laStringAverifier="    ";
    string uneAutre="  n  ";
     
    emptyStringPattern.IsMatch(laStringAverifier);
    //renvoie true
     
    emptyStringPattern.IsMatch(uneAutre);
    //renvoie false

  9. #9
    Membre émérite 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
    Par défaut
    Je sort de réunion, désolé de ne plus être intervenu sur ce thread plus tôt. Désolé pour mon agressivité, j'ai peut-être réagit trop violement. Le problème est qu'on voit trop souvent des utilisateurs qui ne cherchent pas assez.

    Si tu veux calquer le comportement de la méthode PHP que tu utilises, le mieux est de créer une fonction Helper, c'est à dire une fonction utilitaire. Pour cela, créer une nouvelle classe statique, par exemple StringUtil.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public static class StringUtil
    {
    }
    Pour les notions d'OOP, je te laisse compulser la littérature ;-)

    Déclare une nouvelle fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static bool ContainsOnlySpaces(string searchString)
    {
        // Code
    }
    Le code à y insérer peut-être différent. On t'as proposé plusieurs façon de faire et j'ai (évidement) une préférence pour les miennes.

    Personnelement, la méthode utilisant Trim n'est pas la bonne car elle modifie la chaine à tester. Quand à la suggestion des expressions régulières, c'est une excellente idée, mais les regexp sont parfois compliquée à mettre en oeuvre.

    Pongten à bien résumé le bout de code avec la méthode anonyme. Si la syntaxe te parrait étrange, c'est normal, mais ca viendra. Donc, dans un premier temps, je te suggère ceci:

    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
    18
    public static class StringUtil
    {
    	public static bool ContainsOnlySpaces(string searchString)
    	{
    		bool result = true;
     
    		foreach (char c in toTest.ToCharArray())
    		{
    		    if (c != ' ')
    		    {
    		        result = false;
    		        break;
    		    }
    		}
     
    		return result;
    	}
    }
    Tu utiliseras cette méthode, un peu comme en PHP:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     if (StringUtil.ContainsOnlySpaces(myString))
    {
    }

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Merci beaucoup pour toutes ces précisions Neptune ! ^^

    Je comprend ton énervement pour les gens qui ne cherche pas, j'ai un peut le même probleme quand je file un coup de main à des programmeur PHP.

    Mais c'est vraix que chercher, ça s'apprend aussi, mais si ça semble naturel quand on a l'habitude.

    Je me rend d'ailleur bien compte de la dificulté que ça représente quand on cherche des info sur des sujet que l'on ne maitrise pas du tout...

    Quoi qu'il en soit, je ne cherche pas particulièrement à reproduire le comportement de PHP, ça n'aurrait pas grand intéret...

    Je veux surtout vérifier si ma chaine ne contient pas QUE des caractère blanc (pas forcément que des espaces, mais aussi des tab, saut de ligne, tab verticals, et TOUT autre caractere blanc)

    Pour ce qui est des regex, je m'en méfi comme de la peste.
    Outre le fait que je les trouve lourde, elles sont dificile à lire et à manipuler, et ça provoque souvent des erreur... (d'autant plus que je suis particulièrement dyslexique !)

    En plus de ça, elle ont souvent un comportement tres légèrement diférent en fonction des languages, voir même entre diférentes version d'un même language (j'avais eu ce probleme avec PHP)

    Jusqu'a maintenant, j'ai toujours réussi à m'en passer en PHP, en utilisant les ctype_* là ou tout le monde utilisait les regex.

    je suis conscient que le trim modifie la chaine, c'est ce qui fait qu'apres mon test je n'utilise pas la chaine qui a été trimé, et c'étais la solution la plus simple à mettre en oeuvre

    Meme si l'on utilise pas la chaine trimmé apres le test celà pose-t-il un problème ?

    Merci pour le temps que vous me consacrez

  11. #11
    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
    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

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    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 !

  13. #13
    Membre émérite 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
    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... ;-)

  14. #14
    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
    Par défaut
    Citation Envoyé par tatayet_le_felee Voir le message
    bon je veux pas m'avancer mais utiliser les expressions régulières ne serait il pas judicieux pour vérifier qu'il n'y a que des caractères d'espacement
    C'est un peu utiliser un bulldozer pour écraser une mouche... les expressions régulières, c'est pas génial pour les perfs

+ Répondre à la discussion
Cette discussion est résolue.

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, 12h47
  2. Réponses: 8
    Dernier message: 08/05/2009, 15h54
  3. savoir si une chaine ne comporte que des lettres
    Par kamouminator dans le forum C
    Réponses: 22
    Dernier message: 16/11/2006, 02h19
  4. Réponses: 4
    Dernier message: 20/02/2006, 00h33
  5. Réponses: 20
    Dernier message: 07/12/2005, 15h32

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