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 :

Modifier des noms avec une expression régulière


Sujet :

VBScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Géologue
    Inscrit en
    Septembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Niger

    Informations professionnelles :
    Activité : Géologue
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 37
    Points : 27
    Points
    27
    Par défaut Modifier des noms avec une expression régulière
    Bonjour,
    Ma question concerne les expressions régulières.

    Je cherche a modifier des noms (de répertoires et ou fichiers) de la manière suivante :
    - Supprimer tout les espaces potentiels, quelque soit leur position (début, milieu et fin de chaîne),
    - Mettre toutes les lettres en majuscule au cas ou ce ne serait pas le cas.

    J'ai commencer à plancher sur les expressions régulières, mais je ne trouve pas comment faire cela en une seule fois bien qu'il me semble que ce soit possible?

    Peut-on en même temps tester si le premier caractère, espace omis au cas ou, est un S ou s?

    J'utilise : RegEx.Pattern = "[a-z]|\s+" pour trouver les minuscule et les espaces, cela fonctionne bien, mais c'est la suite sur laquelle je butte ...

    Pouvez vous m'aider?
    Un grand merci d'avance.

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Mettre toutes les lettres en majuscule au cas où ce ne serait pas le cas.
    Là, ce n'est vraiment pas trop commode à faire en regex, sinon impossible; et c'est décevant. Pour cette raison, il vaut mieux se servir des fonctions de base sur les textes ordinaires, qui ne compromettent, dans ce cas, aucunement la généralité et flexibilité, sauf les issues liés à l'i18n - qui, de toute façon, n'est pas un point fort de vbscript.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    's au point de départ, t le résultat recherché
    t=ucase(s)
    t=replace(t, " ", "")

  3. #3
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    salut,

    Citation Envoyé par tsuji Voir le message
    Là, ce n'est vraiment pas trop commode à faire en Regex, sinon impossible; et c'est décevant......
    [CODE]'s au point de départ, t le résultat recherché

    il faut differencier entre les Regex et les outils offertes par les langages utilisant cette technologie, les Regex ne permettent pas de splitter, joigner, remplacer ...etc c'est le boulot de ces outils.

    Citation Envoyé par tsuji Voir le message
    n'est pas un point fort de vbscript.
    je suis assez d'accord avec toi, les outils offertes ainsi que le moteur regex en lui même n'est pas même à la hauteur du moteur javascript (compatible ecmascript). On peux par contre utiliser des fonctions pointer pour combler cette lacune, la fonction sera appelé à chaque match reussi..un exemple:
    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
     
    txt = "c:\my folder\my file.txt"
     
    function repl(m,p,s)
     ' m = match reussi 
     ' p = position
     ' s = texte reference
     if m = " " then
       txt = ""
     else
       txt=ucase(m)
     end if
       repl = txt
    end function
     
    set rx = New Regexp
    With rx
      .Pattern = "\s|[a-z]"
      .Global = true
      .IgnoreCase = false
    End With
     
    msgbox rx.Replace(txt, GetRef("repl"))
    ainsi on pourra executer du code à chaque fois qu'un match reussi.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Géologue
    Inscrit en
    Septembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Niger

    Informations professionnelles :
    Activité : Géologue
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 37
    Points : 27
    Points
    27
    Par défaut
    Tsuji, I'm_Here,

    Je vous remercie pour vos réponse qui me sont d'une grande aide.

    Le petit script d'I'm_Here fonctionne super bien et je vais pouvoir utiliser cela sans trop de problème après une petite adaptation.

    Encore merci à vous.

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

Discussions similaires

  1. [FAQ] Comment tester une chaîne de caractères avec une expression régulière ?
    Par Baptiste Wicht dans le forum Vos Contributions VBScript
    Réponses: 1
    Dernier message: 20/11/2007, 19h43
  2. Problème avec une expression régulière ?
    Par MaTHieU_ dans le forum Delphi
    Réponses: 1
    Dernier message: 28/04/2007, 18h50
  3. [RegEx] problème avec une expression régulière
    Par sissi25 dans le forum Langage
    Réponses: 2
    Dernier message: 19/04/2007, 09h12
  4. [JMeter] Extraction avec une expression régulière
    Par LittleBean dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 04/04/2007, 17h39
  5. Problème avec une expression régulière
    Par Darkroro dans le forum Langage
    Réponses: 7
    Dernier message: 09/10/2006, 12h13

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