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

C# Discussion :

[C#] Quelle fonction permet de supprimer tous les blancs d'une chaine ?


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Points : 148
    Points
    148
    Par défaut [C#] Quelle fonction permet de supprimer tous les blancs d'une chaine ?
    Salut,

    Je voulais juste savoir s'il existait une fonction toute faite permettant de supprimer tous les blancs d'une chaine, afin d'éviter de réimplémenter cela si cela existe déjà.

    Par exemple, retirer les blancs suivants :

    ma_chaine__n'est__pas_très_longue

    Donner : machainen'estpastrèslongue

    Merci pour toute info supplémentaire.

  2. #2
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Salut .

    regarde du coté de la fonction Trim de la classe string.
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  3. #3
    Membre émérite
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Points : 2 883
    Points
    2 883
    Par défaut
    tu sais, "réimplémenter" c'est un bien grand mot, il faut moins de lignes de code pour faire ce que tu veux que ton message pour demander de l'aide...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public string DeleteSpace(string laChaine)
    { string tmp; foreach (char c in laChaine) if (c!=' ') tmp+=c; return tmp; }
    sinon, en cherchant bien dans la classe string, tu aurais pu voir la fonction Replace().
    Pour virer tous les espaces :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    machaine = machaine.Replace(" ","");
    tout simplement...

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par dev01
    regarde du coté de la fonction Trim de la classe string.
    La méthode Trim remplace les occurences de caractères se situant en début et en fin de chaîne uniquement

    Dans le cas présent, la méthode Replace est plus appropriée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string maChaine = "ma chaîne n'est pas très longue";
    string maNouvelleChaine = maChaine.Replace(" ", string.Empty);
    Edit : grilled ^^
    Pas de questions techniques par MP

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    S'il fait supprimer tous les blancs (donc pas uniquement les espaces), le plus simple est d'utiliser les expressions régulières (namespace System.Text.RegularExpressions)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string nouvelleChaine = Regex.Replace(maChaine, @"\s+", "");

  6. #6
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par StormimOn
    La méthode Trim remplace les occurences de caractères se situant en début et en fin de chaîne uniquement

    Dans le cas présent, la méthode Replace est plus appropriée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string maChaine = "ma chaîne n'est pas très longue";
    string maNouvelleChaine = maChaine.Replace(" ", string.Empty);
    Edit : grilled ^^
    oups honte sur moi j'ai pas fait gaffe ...
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  7. #7
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par Merlin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public string DeleteSpace(string laChaine)
    { string tmp; foreach (char c in laChaine) if (c!=' ') tmp+=c; return tmp; }
    [/code] tout simplement...
    Salut,
    ça (tmp+=c) c'est un des trucs typiques à éviter car tmp étant un string, faire tmp=... alloue de la mémoire à chaque fois. Pour peu que ta fonction DeleteSpace soit régulièrement sollicitée ça va être lent.

    utiliser StringBuilder c'est bien

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Points : 148
    Points
    148
    Par défaut
    OK merci pour ces informations, qu'est ce qui est plus rapide c'est utiliser les expressions régulières ou la fonction "Replace" (à laquelle je n'ai d'ailleurs pas pensé) ?

  9. #9
    Membre émérite
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Points : 2 883
    Points
    2 883
    Par défaut
    Citation Envoyé par abelman
    Salut,
    ça (tmp+=c) c'est un des trucs typiques à éviter car tmp étant un string, faire tmp=... alloue de la mémoire à chaque fois. Pour peu que ta fonction DeleteSpace soit régulièrement sollicitée ça va être lent.
    utiliser StringBuilder c'est bien
    Non, il ne faut pas être extrémiste comme ça
    Dans l'exemple présent la longueur des chaînes à traiter semble (sans indication contraire) relativement faible. Et dans un tel cas l'utilisation d'un StringBuilder n'est pas forcément à conseiller systématiquement et peut amener à des contre-performances.
    Entre les cas où string s'impose et ceux où StringBuilder s'impose, il y a tout un tas de cas limites qui, si on cherche l'optimisation à tout prix, ne peuvent être tranchés qu'avec un profiler en fait.
    De fait dès qu'on fait un string += 'bla'; c'est pas toujours rentable d'utiliser un StringBuilder à la place.

  10. #10
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Je ne suis pas extrémiste

    Je pense quand même que même si la taille de la chaine est petite, si on doit refaire l'opération un certain nombre de fois (typiquement dans une boucle), le StringBuilder est plus performant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for (int i=0; i<1000; i++)
    {
        mastring += "bla"; // equivaut à mastring = new string(mastring + 'bla');
    }
     
    // Sb étant un StringBuilder, ce code est plus rapide
    for (int i=0; i<1000; i++)
    {
        sb.Append("bla"); 
    }
    Par contre si on le fait juste une fois, effectivement je suis d'accord avec toi

  11. #11
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629

  12. #12
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 12
    Points
    12
    Par défaut le réponse trés simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string drChoisie = " toto ";
    
    drChoisie.Trim();//vide les caractères devant et dérriére la chaine
    
    response.write(drChoisie);// affiche drChoisie = "toto"

  13. #13
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    C'est peut être pas obligatoire de remonter des sujets de 2006 pour donner la même réponse que dans le message #2 (surtout que celle-ci est erronnée)

  14. #14
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par abelman Voir le message
    utiliser StringBuilder c'est bien
    Dans le cas précis, StringBuilder qui est beaucoup plus performante en général que la manip de chaine "à la mimine" n'apporte strictement rien (au contraire).

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  15. #15
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    C'est peut être pas obligatoire de remonter des sujets de 2006 pour donner la même réponse que dans le message #2 (surtout que celle-ci est erronnée)
    Oups, pan sur le bec, c'est valable pour moi aussi

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

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

Discussions similaires

  1. Supprimer tous les blancs dans une chaine de caractères
    Par joel74 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 20/02/2014, 16h19
  2. Supprimer tous les accents d'une chaine
    Par smarties dans le forum Qt
    Réponses: 7
    Dernier message: 26/12/2010, 14h23
  3. Réponses: 3
    Dernier message: 17/03/2010, 14h50
  4. [PHP 4] Petit Script Qui Permet De Supprimer Tous Les Fichiers D'un Dossier
    Par The_Haunted dans le forum Langage
    Réponses: 5
    Dernier message: 03/01/2009, 15h15
  5. Supprimer TOUS les espaces d'une chaine
    Par tavekapaclike1er dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/12/2005, 15h19

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