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 :

Regexp exlure non-alphanum SAUF certain


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Regexp exlure non-alphanum SAUF certain
    Bonjour

    J'ai posé une question similaire en tombant par sur le sous-forum PHP regexp
    Mais il est peut etre mieux de poster ici en C#

    Veuillez donc pardonner ou supprimer ce doublon

    Je dois supprimer tous les caracteres non-alphanuerique d'une chaine

    L'expression suivante fais cela tres bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String Key=Regex.Replace(value.ToUpper(), "[\\W]", "");
    Mais que faire si je veux converver certains caracteres : "+-@";

  2. #2
    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
    Essaye avec l'expression : [^\w@+-]

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci Stormimonn

    Comme d'hab !
    Tout mon respect pour ta science en général et ta connaissance des Regexp en particulier

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Bonjour,

    Première chose, concernant ta RE:

    à moins qu’il y ait une différence en C# , les crochets ne sont pas nécessaires dans ta RE.

    [\\W] signifie “un caractère quelconque appartenant à l’ensemble de caractères définis entre crochets“

    Mais comme il n’y a qu’un caractère symbolisé entre les crochets, ceux-ci sont inutiles:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String Key=Regex.Replace(value.ToUpper(), "\\W", "");
    En outre , \W est une séquence spéciale car \ a une fonction spéciale.

    Mais si tu écris \\W, le premier antislash annihile l’effet spécial du second, et tu te retrouves avec une séquence qui symbolise “un antislash“ suivi de la lettre “W“

    Sauf erreur de ma part.

    Donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String Key=Regex.Replace(value.ToUpper(), "\W", "");

    Deuxièmement,


    pour garder les caractères "+-@" :


    [^\w+-@]

    cette fois, [^...] définit une classe par complémentation. Le signe ^ indique: “tous les caractères sauf ceux qui suivent".

    Ceux qui suivent sont : les caractères alphanumériques (attention: petit \w) + les caractères +-@

    Donc le programme va chercher et remplacer par '' tous les caractères qui ne sont pas ceux-ci. Il va donc rester ces caractères.

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci Eyquem

    Tes précisions sont utiles

    Mais tu fais effectivement une petite erreur concernant l'antislash

    En C# le premier antislash sert précisément a proteger le second !!
    Donc si tu veux exprimer \W, tu DOIS ecrire \\W ou alors @"\W"

    Le @ servant dans ce cas a "verbatimiser" la chaine

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

Discussions similaires

  1. fonctions désactivées sauf certains cas
    Par ricoba19 dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2006, 17h51
  2. regExp:match non déclaré
    Par Mike35 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 10/04/2006, 12h10
  3. Composants non visible dans certaines applications
    Par chtom dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 22/03/2006, 18h33
  4. non apparition de certains champs
    Par clov dans le forum Access
    Réponses: 2
    Dernier message: 05/11/2005, 22h30
  5. 1ère lettre en majuscule sauf certains mots !!!
    Par beletteroi dans le forum Access
    Réponses: 1
    Dernier message: 11/10/2005, 09h52

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