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 :

Enlever les caractères spéciaux d'une chaîne de caractères.


Sujet :

C#

  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut Enlever les caractères spéciaux d'une chaîne de caractères.
    Bonjour,

    J'aimerais convertir une chaîne de caractères vers une autre qui ne contient que les caractères numériques et alphabétiques (a, A, b, B, ...). Et enlever les espaces et les caractères spéciaux (', ", >,...).

    Est-ce que vous pouvez me donner les fonctions (C#) qui vont m'aider ?

    Et merci.

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    String.Replace ou Regex.Replace.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    Mais, on sait pas toutes les caracteres pour les remplacer par chaine vide.

    Je veux nettoyer la chaîne de ces caracteres spéciaux.

    Et merci.

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par insane_80 Voir le message
    Mais, on sait pas toutes les caracteres pour les remplacer par chaine vide.
    Pourquoi ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    Je veux ça:

    ff "254' P ---->ff254P

    <fg>k;!54 fd ---->fgk54fd

    ........

    Et merci.

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Tu ne réponds pas à la question :
    Pourquoi tu ne peux pas utiliser String.Replace ou Regex.Replace ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Il n'y a pas 36 000 caractères, tu peux lister tous les caractères spéciaux, et débarasser ta chaine de ces caractères.
    Ou avec les regex, ne repéré que les caractères non spéciaux et les copier dans une nouvelle chaine.

  8. #8
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    String.Replace ou Regex.Replace permettent de remplacer certains caractères connues par autres !

    Sinon je pense que je dois utiliser les expressions régulieres au sein de ces fonctions! N'est ce pas.

  9. #9
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Pas la peine de prendre un tel ton lorsque l'on essaye de t'aider.
    Genre vous ne comprenez rien, c pourtant pas compliquer ce que je veux faire.

    Les regexp te permettronde faire ce que tu souhaites.
    Deux façons :
    - Détecter les caractères normaux et les copier ailleurs.
    - Détecter les caractères spéciaux et les supprimer.

    Fait comme tu le souhaites mais les deux sont réalisables.

    Tu peux aussi utiliser les fonction de string, mais les opérations seront lourdes, je epnse que les regexp sont plus utiles dans ton cas.

  10. #10
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Par défaut Code ASCII
    salut tt le monde

    moi je opte tj dans ce genre de situation à préconiser les test niveau code ASCII

    alors
    1- tu parcours ton chaine de caractère
    2- tu récupère l'élément ( un caractère) et tu teste si son code ASCII est compris entre l'interval alphanumériques

    chiffre 48< string[i] <57
    lettres 97< string[i] <122 (miniscules)
    lettres 65< string[i] <90(majescules)

    bonne chnace

  11. #11
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Par défaut
    J'ai trouvé la solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeur_sortie=Regex.Replace(valeur_entrée, "[^a-zA-Z0-9_]", "");
    Merci pour tout le monde.

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Juillet 2010
    Messages : 98
    Par défaut
    J'adore la solution. Cela marche nickel est cela évite de faire une vingtaine String.Replace(...)

    Parfait

    Merci pour la solution

  13. #13
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Pour une solution qui fonctionne avec toutes les langues, en provenance d'un expert MS des problèmes d'internationalisation : stripping diacritics. A ajouter aux favoris.

  14. #14
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 7
    Par défaut
    Yop.

    Super la regex, je comptais faire deux boucles imbriquées pour travailler sur le code ascii de chaque caractère ... et bah non ça se fait en une ligne

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

Discussions similaires

  1. Enlever les balises HTML d'une chaine de caractère
    Par okoweb dans le forum Langage
    Réponses: 2
    Dernier message: 24/10/2011, 17h19
  2. Réponses: 4
    Dernier message: 06/02/2009, 12h10
  3. Réponses: 2
    Dernier message: 08/07/2008, 11h50
  4. Réponses: 2
    Dernier message: 13/06/2008, 10h21
  5. Caractères spéciaux dans une chaîne
    Par Eric93 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 20/12/2007, 13h48

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