Autoit explode - 2 séparateur

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
BastienDvpSta
Niveau 1
Niveau 1
Messages : 8
Enregistré le : jeu. 02 juin 2016 09:08
Status : Hors ligne

Autoit explode - 2 séparateur

#1

Message par BastienDvpSta »

Bonjour je suis actuellement sur un projet ou le technicien pourra par critère sélectionner une image stocker sur un serveur :

. Etape 1 : Je récupère l'ensemble des fichiers de mon serveur ghost dans un tableau

. Etape 2 : Ayant 2 séparateur \ et , je crée ou j’enlève les \ et je récupère ses premières données ensuite je crée un deuxième tableau ou j'enlève les - et je récupérè les secondes données.
Exemple de dossier : VWR\HP PROBOOK 450 G1\SYSPREP-GER-16072014_ful_b1_s1_v1.tib.txt

La parti en rouge correspond a l'image que je récupére

. Etape 3 : Dans la boucle ou j’enlève mes 2 séparateur ou après crée un tableau pour afficher les données

Problème : Je voudrais la logique pour exploser 2 caractères distincte et les mètres dans un tableau

Etape 1 ( fonctionne ) :
► Afficher le texte

Etape 2 ( Problème ) :
J'ai essayer d'utiliser un explode comme en php mais mon code affiche sans arrêt des erreurs

Voila ce que j'aimerai faire

$tableau1 = Etape1

For $i de 1 a nombre de ligne max de $tableau1
{
$var1 = $tableau1[$i] avec \ exploser
// je mes les données dans le tableau de $var1

$var2 = $var1[$i] avec - exploser
// je mes les données dans le tableau de $var2
}

Merci d'avance pour les indications que vous pourrez m'apporter je fais des études de réseau a la base soyer indulgent ^^
Réalisation.PNG
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Autoit explode - 2 séparateur - non résolu

#2

Message par jchd »

StringSplit() ne convient pas ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
BastienDvpSta
Niveau 1
Niveau 1
Messages : 8
Enregistré le : jeu. 02 juin 2016 09:08
Status : Hors ligne

Re: Autoit explode - 2 séparateur - non résolu

#3

Message par BastienDvpSta »

Merci pour votre réponse rapide vous aviez effectivement raison et m'avez fais gagner un temps précieux


Cependant le code pourrait être plus optimiser que ma solution :
En effet j'aurai du utiliser 2 fois la fonction pour les - et pour les \ serait il possible de le faire en une fois plutôt que d'utiliser un string Replace pour uniformiser les séparateur de code
Un string split qui pourrait délimiter plusieurs caractère en même temps non un

Dans un soucis de lisibilité et de maintenance seriez vous utiliser simultanément

Merci de votre futur réponse je vous laisse un exemple de code ci dessous

Code : Tout sélectionner

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

Example()

Func Example()



	; Replace a blank space (' ') with a - (minus) character.
Local $sString = StringReplace("VWR\HP 800G1\7P-TEK-32B\SP1\SYSPREP-FR-04032014.tib.txt", "-", "\")
Local $iReplacements = @extended
MsgBox($MB_SYSTEMMODAL, "", $iReplacements & " replacements were made and the new string is:" & @CRLF & @CRLF & $sString)






        Local $sText = "This\nline\ncontains\nC-style breaks." ; Define a variable with a string of text.
    Local $aArray = StringSplit($sString, '\', $STR_ENTIRESPLIT) ; Pass the variable to StringSplit and using the delimiter "\n".
    ; Note that flag parameter is set to $STR_ENTIRESPLIT (1) as it would split at \ or n otherwise.
    #cs
        The array returned will contain the following values:
        $aArray[1] = "This"
        $aArray[2] = "line"
        ...
        $aArray[4] = "C-style breaks."
    #ce

    For $i = 1 To $aArray[0] ; Loop through the array returned by StringSplit to display the individual values.
        MsgBox($MB_SYSTEMMODAL, "", "$aArray[" & $i & "] - " & $aArray[$i])
    Next
EndFunc   ;==>Example
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Autoit explode - 2 séparateur - non résolu  

#4

Message par orax »

On peut faire ça à l'aide d'une expression régulière.

Code : Tout sélectionner

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

Example()

Func Example()
	Local $aArray = StringRegExp("VWR\HP 800G1\7P-TEK-32B\SP1\SYSPREP-FR-04032014.tib.txt", "([^-\\]+)", $STR_REGEXPARRAYGLOBALMATCH)

	For $i = 0 To UBound($aArray) - 1 ; Loop through the array returned by StringRegExp to display the individual values.
		MsgBox($MB_SYSTEMMODAL, "", "$aArray[" & $i & "] - " & $aArray[$i])
	Next
EndFunc   ;==>Example
https://regex101.com/r/nU5tL4/1
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
BastienDvpSta
Niveau 1
Niveau 1
Messages : 8
Enregistré le : jeu. 02 juin 2016 09:08
Status : Hors ligne

Re: Autoit explode - 2 séparateur - non résolu

#5

Message par BastienDvpSta »

Merci de votre aide rapide et vos solutions c'est exactement ce que je rechercher
Répondre