[R] besoin d'aide pour un StringRegExpReplace

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ethneldryt
Status : Hors ligne

[R] besoin d'aide pour un StringRegExpReplace

#1

Message par ethneldryt »

Bonsoir, comme je n'ai jamais compris comment ca marche j'aurais besoin d'aide :
$test = "c:\dossier 1\dossier2\dossier 3\toto.exe
avec StringRegExpReplace j'aimerais que le resultat $result = "toto.exe".
il faudrais en partant de la droite tout surprimer a partir du "\" quel que sois la longueur de ce qu'il y a avant pour ne grader que "toto.exe"
Merci ;)
Modifié en dernier par ethneldryt le mer. 10 juin 2009 00:45, modifié 1 fois.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] besoin d'aide pour un StringRegExpReplace

#2

Message par Iste »

Je suis pas trop fort en regexp, donc j'utilise souvent des alternative !
Par exemple, pour ton cas je dirais :

Code : Tout sélectionner

$var = StringSplit($avant,"\")
$apres = ""
For $i = 1 To $var[0] -1
    $apres &= $var[$i]&"\"
Next
$apres &= "pastoto.exe"
En fait, je découpe la variable en petit bout, et je recole comme je veux..
Signez ici
ethneldryt
Status : Hors ligne

Re: [..] besoin d'aide pour un StringRegExpReplace

#3

Message par ethneldryt »

salut, je ne comprend pas ton script, du moi je n'arrive pas a le faire marcher :P
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] besoin d'aide pour un StringRegExpReplace

#4

Message par Tlem »

Voici :

Code : Tout sélectionner

MsgBox(0,"", LSP("c:\dossier 1\dossier2\dossier 3\toto.exe"))
MsgBox(0,"", LSP("c:\dossier 1\dossier2\dossier 3\toto le programme.exe"))
MsgBox(0,"", LSP("\\La machine serveur\Le dossier 1\Le dossier 2\Le Dossier 3\toto.exe"))
MsgBox(0,"", LSP("\\La machine serveur\Le dossier 1\Le dossier 2\Le Dossier 3\toto..exe"))

Func LSP($sPath)
    $sLast = StringRegExpReplace($sPath, "^.*\\|\.*$", "")
    Return $sLast
EndFunc
En utilisant le pattern suivant : "^.*\\|\..*$"
Vous obtiendrez le nom sans l'extension. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] besoin d'aide pour un StringRegExpReplace  

#5

Message par Iste »

Code : Tout sélectionner

$avant = "c:\dossier 1\dossier2\dossier 3\toto.exe" ; $avant contient la chaine a modifier

$var = StringSplit($avant,"\") ; $var devient un array d'une découpe sur chaque "\"
;$var[0] contient le nombre d'éléments, donc ici 5
;$var[1] contient donc "c:"
;$var[2] contient "dossier 1"
;$var[3] contient "dossier 2"
;$var[4] contient "dossier 3"
;et $var[5] contient "toto.exe"

$apres = "" ; on crée une variable pour contenir la nouvelle chaine

For $i = 1 To $var[0] -1    ;on lance une boucle pour chaque bout découpé, 
                            ;moins 1 car toto.exe on en veut pas
                            
    $apres &= $var[$i]&"\"  ;on ajoute a la variable le bout de chaine numéro $1, suivit d'un "\"
                            ;Le premier coup, la variable deviendra "c:\", puis "c:\dossier 1" 
                            ;jusqu'a devenir "c:\dossier 1\dossier2\dossier 3\"
Next

$apres &= "pastoto.exe" ;on rajoute le nouveau nom de l'exe,et vala !
c'est mieux ? ^^

Edit : a zut, Tlem plus rapide :(
en meme temps, "^.*\\|\..*$" j'aurais jamais trouvé xD
Signez ici
ethneldryt
Status : Hors ligne

Re: [R] besoin d'aide pour un StringRegExpReplace

#6

Message par ethneldryt »

merci a vous deux :)
Répondre