Page 1 sur 1

Autoit explode - 2 séparateur

Posté : jeu. 02 juin 2016 10:10
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

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

Posté : jeu. 02 juin 2016 10:26
par jchd
StringSplit() ne convient pas ?

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

Posté : jeu. 02 juin 2016 13:45
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

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

Posté : jeu. 02 juin 2016 14:11
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

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

Posté : jeu. 02 juin 2016 15:48
par BastienDvpSta
Merci de votre aide rapide et vos solutions c'est exactement ce que je rechercher