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

VB.NET Discussion :

String Regex Replace


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut String Regex Replace
    Bonjour,

    Je cherche à remplacer certaines suite de caractère par une autre, mais je galère sur le regex à mettre en place...

    J'aimerai chercher (crochets non compris) [/] [ /] [ / ] [/ ] [ , ] [ ,] et tous les remplacer par [, ]


    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 067
    Points : 17 154
    Points
    17 154
    Par défaut
    Salut

    Il semble que le pattern devrait être ([/ \[\],]+) et le Replace ,H (virgule suivit d'un espace).
    Une phrase exemple aiderait à t'aider
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Il semblerait que ça me sélectionne aussi les espaces non entouré d'un [/] ou [,]

    Pour l'exemple :
    JOHN DOE/ MCKEE/BRADLEY,DUNNE / MURRAY/VANCE /MCDAID / GRAHAM

    Le but est d'uniformiser et d'obtenir :
    JOHN DOE, MCKEE, BRADLEY, DUNNE, MURRAY, VANCE, MCDAID, GRAHAM


    Merci pour ton aide.

  4. #4
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 067
    Points : 17 154
    Points
    17 154
    Par défaut
    Salut
    Avec ([\/ \[\],]+) cela devrait le faire (vérifier avec ta phrase exemple)
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour à vous deux,

    Si vous ne parvenez pas au résultat souhaité, je vous proposerai une solution SANS RegEx.

    Bonne journée,


  6. #6
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 067
    Points : 17 154
    Points
    17 154
    Par défaut
    Salut
    Citation Envoyé par Phil Rob Voir le message
    ... une solution SANS RegEx.
    Bonne journée,
    Toutes solutions sont bonnes à prendre.

    Pour ma part, je n'ai jamais fait beaucoup de vb.net, je n'ai plus visual studio sur mon ordinateur.
    J'ai réussi à faire ceci qui fonctionne en m'aidant de cet outil en ligne, mais en 2 étapes

    ------------------------------ étape 1 ----------------------
    JOHN DOE/ MCKEE/BRADLEY,DUNNE / MURRAY/VANCE /MCDAID / GRAHAM
    Pattern: [ \/]{2}|[\/] remplacer par une virgule ,.
    JOHN DOE,MCKEE,BRADLEY,DUNNE, MURRAY,VANCE,MCDAID, GRAHAM <------------ résultat
    ------------------------------ étape 2 ----------------------
    Avec le résultat de l'étape 1
    Patttern [, ]{2} remplacer par une virgule ,.
    JOHN DOE,MCKEE,BRADLEY,DUNNE,MURRAY,VANCE,MCDAID,GRAHAM <------------- résultat

    Par contre je ne sais plus l'écrire pour vb.net
    Cela serait peut être du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    LeString = "JOHN DOE/ MCKEE/BRADLEY,DUNNE / MURRAY/VANCE /MCDAID / GRAHAM"
    oldString = LeString.Replace("[ \/]{2}|[\/]",",")
                'JOHN DOE,MCKEE,BRADLEY,DUNNE, MURRAY,VANCE,MCDAID, GRAHAM
    newString = oldString.Replace("[, ]{2}",",")
                ' JOHN DOE,MCKEE,BRADLEY,DUNNE,MURRAY,VANCE,MCDAID,GRAHAM
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,

    Je n'ai pas de test RegEx sous la main pour vérifier rapidement ta solution. Elle me paraît correcte mais cela ne tient qu'à un caractère près ... A Cestmoi3056 de dire ce qu'il en est.

    Si ma solution sans RegEx peut intéresser, la voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        Private Function ChangeSlashes(ByRef ChaineIni As String) As String
            Dim Tmp() As String
            Dim Cherche As Char = "/"c
            Dim Remplace As String = ", "
            Tmp = ChaineIni.Split(Cherche)
            Tmp(0) = Tmp(0).Trim()
            For I As Integer = 1 To Tmp.Length - 1
                Tmp(0) &= Remplace & Tmp(I).Trim
            Next
            Return Tmp(0)
        End Function
    Je l'ai mise en fonction de sorte qu'elle peut être exploitée directement : MaChaineChangee = ChangeSlashes(LaChaineAChanger).

    L'idée de départ est la suivante :
    1. Transformer la chaine initiale en un tableau de chaines par un SPLIT sur base du caractère "/";
    2. Faire un TRIM de chaque chaine du tableau;
    3. Refaire un chaine finale par concaténation des chaines du tableau avec un ", " entre chacune.


    A noter encore que la fonction peut être optimisée en

    Bon week-end,


  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Merci à tous pour vos messages, qui m'ont donné des pistes intéressantes...

    Finalement, voici ce que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ \/]{3}|[ \/]{2}|[ ,]{3}|[ ,]{2}

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/06/2008, 10h32
  2. Soucis avec regex.replace
    Par elric47 dans le forum ASP
    Réponses: 1
    Dernier message: 30/04/2008, 00h33
  3. string : fonction replace
    Par john123 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 21/08/2007, 16h23
  4. [Regex] Replace possible ?
    Par Tchinkatchuk dans le forum C
    Réponses: 2
    Dernier message: 18/12/2006, 10h02
  5. [String] pb fonction String[] split(String regex)
    Par Kyti dans le forum Langage
    Réponses: 6
    Dernier message: 05/04/2005, 14h06

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