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

VBScript Discussion :

[VBS] Traitement de chaine de caractères


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [VBS] Traitement de chaine de caractères
    Bonjour,

    Le code suivant permet de supprimer les caractères consécutifs identique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function DeleteConsecutiveChars (MyTxt)
        Dim I
        Dim StrOutput
        StrOutput = Mid(MyTxt, 1, 1)
        MsgBox StrOutput
        For I = 1 To Len(MyTxt) -1
            If Mid(MyTxt, I, 1)<> Mid(MyTxt, I + 1, 1) Then StrOutput = StrOutput & Mid(MyTxt, I + 1, 1)
        Next 
        DeleteConsecutiveChars = StrOutput
    End Function
     
    strSource = "AAAeeelmA12fggg35526666m"
     
    msgbox DeleteConsecutiveChars (strSource)
    J'essaie de le modifier pour permettre la suppression de groupes de caractères identiques.
    La chaine est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "[a-z]+[a-z]+[a-z]+( )[A-Z]+( )[0-9]+(.)[a-z]+[a-z]+[a-z]+( )[0-9]+"
    J'essaie d'obtenir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "[a-z]+( )[A-Z]+( )[0-9]+(.)[a-z]+( )[0-9]+"
    Je définis la longueur et la position:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    StrOutput = Mid(MyTxt, 1, 6)
    MsgBox StrOutput
    Mon MsgBox me retourne bien Je ne parviens pas définir les bonnes valeurs des fonctions de traitement de chaine.

    Un peu d'aide SVP?

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    En reprenant ton exemple AAAeeelmA12fggg35526666m.
    Quels sont les blocs de caractères identiques et a quoi doit correspondre la sortie ?

    Je dirais bien qu'un bloc est au minimum composé de deux caractères.
    Le seul que je vois est dans la chaine 6666 qui a deux blocs 66
    Le résultat sera donc AAAeeelmA12fggg3552m avec inclusion ou sans AAAeeelmA12fggg355266m

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut

    Ce que j'ai compris,
    si strSource = [a-z]+[a-z]+[a-z]+( )[A-Z]+( )[0-9]+(.)[a-z]+[a-z]+[a-z]+( )[0-9]+
    récupération = [a-z]+( )[A-Z]+( )[0-9]+(.)[a-z]+( )[0-9]+
    Car il y a répétition du groupe de caractères consécutifs identique [a-z]+
    Par contre la formule ....
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Par contre la formule ....
    A essayer avec différents strSource
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Function DelGroupChars(MyTxt)
        Dim T, U, V, Deb2
        Dim StrOutput, GrpChar
    'strSource = "[a-z]+[a-z]+[a-z]+( )[A-Z]+( )[0-9]+(.)[a-z]+[a-z]+[a-z]+( )[0-9]+"
    '                         [a-z]+( )[A-Z]+( )[0-9]+(.)[a-z]+            ( )[0-9]+
        V = CInt(Len(MyTxt) / 2)
        StrOutput = MyTxt
        For T = 1 To Len(StrOutput) - 1
            V = CInt(Len(StrOutput) / 2)
            For U = 2 To V
                GrpChar = Mid(StrOutput, T, U)
                Deb2 = InStr(T + U - 1, StrOutput, GrpChar, vbBinaryCompare)
                If Deb2 = U + T Then
                    If T = 1 Then
                        StrOutput = Replace(StrOutput, GrpChar, "", Deb2, 1, vbBinaryCompare): T = T - 1
                        Else
                        StrOutput = Left(StrOutput, Deb2 - 1) & Replace(StrOutput, GrpChar, "", Deb2, 1, vbBinaryCompare): T = T - 1
                    End If
                    Exit For
                End If
            Next
        Next
        DelGroupChars = StrOutput
    End Function
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Invité
    Invité(e)
    Par défaut
    OUHaHOU là ca envois du lourd !!!
    Petite question, la déclaration de la chaine strSource doit elle rester dans la Function ?
    Habituellement je sors tout ce qui est appels ou déclarations.

    Pour en revenir au code là j’ai besoin d’explication et pas des moindres !

    A la 1er lecture je n’ai pas déchiffré la moitié du code.
    En tout cas belle prouesse !
    Je viens de faire quelques tests pour le moment RAS le code traite et ne fléchit pas

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    En fait les lignes 4 et 5 sont en commentaire, elles m'ont servies le temps du debug, j'ai oublié de les supprimer.
    Je triche, j'utilise VB6 et antérieur pour debuguer, run pas à pas, variables espions .......
    Citation Envoyé par NeriXs
    Je viens de faire quelques tests pour le moment RAS le code traite et ne fléchit pas
    J'attendais cette information, c'est pourquoi je n'ai pas commenté le code, promis, demain tu auras plus d’explications.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

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

Discussions similaires

  1. Traitement de chaine de caractère
    Par kroax dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/06/2007, 15h09
  2. [VBS]traitement de chaine
    Par tsotb dans le forum VBScript
    Réponses: 3
    Dernier message: 28/04/2006, 10h27
  3. [VB6]Traitement de chaine de caractère + conversion
    Par kboo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/04/2006, 09h23
  4. [XSL] Optimisation d'un traitement de chaines de caractères
    Par mathieu dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/02/2006, 18h57
  5. Traitement de chaine de caractères
    Par lapartdombre dans le forum Langage
    Réponses: 9
    Dernier message: 03/02/2006, 09h29

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