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 régulier
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Points : 110
    Points
    110
    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
    Points : 6 334
    Points
    6 334
    Par défaut
    String.Replace ou Regex.Replace.

  3. #3
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Points : 110
    Points
    110
    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
    Points : 6 334
    Points
    6 334
    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 ?

  5. #5
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Points : 110
    Points
    110
    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
    Points : 6 334
    Points
    6 334
    Par défaut
    Tu ne réponds pas à la question :
    Pourquoi tu ne peux pas utiliser String.Replace ou Regex.Replace ?

  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
    Points : 4 061
    Points
    4 061
    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 régulier
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Points : 110
    Points
    110
    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
    Points : 4 061
    Points
    4 061
    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 régulier
    Inscrit en
    Décembre 2007
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 105
    Points : 90
    Points
    90
    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 régulier
    Inscrit en
    Février 2006
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 373
    Points : 110
    Points
    110
    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 régulier
    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
    Points : 97
    Points
    97
    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
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 493
    Points
    5 493
    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
    Futur 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
    Points : 6
    Points
    6
    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