[..] Décortiquer un string

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Crypto0
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mar. 07 janv. 2014 19:30
Status : Hors ligne

[..] Décortiquer un string

#1

Message par Crypto0 »

Salut tout le monde, suite à mon dernier post qui fut très rapidement corrigé, j'aimerais savoir de quelle manière dois-je m'y prendre pour décortiquer un string de la forme :

Code : Tout sélectionner

Pudding=Lait[0.5],Pain[500],Oeuf[6]
Il faudrait que je me retrouve à la fin avec des variables qui contiendraient un ingrédient avec sa quantité, par exemple :
$Var = Lait[0.5].
Merci d'avance.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Décortiquer un string

#2

Message par mikell »

Il y a plusieurs façons de procéder en fonction de la forme finale recherchée
Par exemple pour mettre dans un ini, vu que ton sujet précédent comportait un "Recettes.ini" :mrgreen: :

Code : Tout sélectionner

$string = "Pudding=Lait[0.5],Pain[500],Oeuf[6]"

_AddRecette("Recettes.ini", $string)

Func _AddRecette($ini, $str)
  Local $txt = ""
  Local $split1 = StringSplit($str, "=")
  Local $split2 = StringSplit($split1[2], ",")
  For $i = 1 to $split2[0]
     $txt &= StringRegExpReplace($split2[$i], '(\w+)\[([\d.]+)\]', '$1=$2') & @lf
     ; ou bien:    $txt &= StringReplace(StringReplace($split2[$i], '[', '='), ']', '') & @lf
  Next
  IniWriteSection($ini, $split1[1], $txt)
EndFunc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Décortiquer un string

#3

Message par Tlem »

Salut. Je propose ceci :

Code : Tout sélectionner

#include <Array.au3>
Local $Var = "Pudding=Lait[0.5],Pain[500],Oeuf[6]"

$Var = StringTrimLeft($Var, StringInStr($Var, "=")) ; On supprime = et ce qu'il y a avant
Local $aVar = StringSplit($Var, ",") ; On met en tableau

_ArrayDisplay($aVar)
Comme ça tout est en tableau direct. ;)

Edit : Ou sinon comme Michel l'a fait :

Code : Tout sélectionner

#include <Array.au3>
Local $str = "Pudding=Lait[0.5],Pain[500],Oeuf[6]"

Local $split1 = StringSplit($str, "=")
Local $split2 = StringSplit($split1[2], ",")

_ArrayDisplay($split2)
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
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Décortiquer un string

#4

Message par mikell »

Ou comme dit Thierry, avec une array qui décortique toutes les données :

Code : Tout sélectionner

#include <Array.au3>
$string = "Pudding=Lait[0.5],Pain[500],Oeuf[6]"

$split1 = StringSplit($string, "=")
$data = StringReplace(StringReplace($split1[2], '[', '='), ']', '')
$split2 = StringSplit($data, ",")
Local $array[$split2[0]+1][2]
For $i = 1 to $split2[0]
  $split3 = StringSplit($split2[$i], "=")
  $array[$i][0] = $split3[1]
  $array[$i][1] = $split3[2]
Next
$array[0][0] = $split1[1]
_ArrayDisplay($array)
ou encore ça

Code : Tout sélectionner

#include <Array.au3>
$string = "Pudding=Lait[0.5],Pain[500],Oeuf[6]"

$res = StringRegExp(StringRegExpReplace($string, '[^\w\d.]', "="), "[\w\d.]+", 3)
_ArrayDisplay($res)
:mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Décortiquer un string

#5

Message par Tlem »

Que de choix ... :mrgreen:
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
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Décortiquer un string

#6

Message par mikell »

Ben oui, qu'est ce que tu veux, il pleut ... :roll: :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Décortiquer un string

#7

Message par jchd »

Oui, mais ce sont des perles de codes qui pleuvent et fertilisent ce sujet !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Décortiquer un string

#8

Message par Tlem »

Magnifique Jean-Christophe. Tu es donc d'humeur fleur bleu aujourd'hui. :lol:
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
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Décortiquer un string

#9

Message par jchd »

Surtout tout émoustillé de voir un string décortiqué de mille façons par autant de praticiens empressés :shock:
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Décortiquer un string

#10

Message par mikell »

C'est ça le sens des responsabilités. On se fait un devoir de méthodiquement décortiquer le string et consciencieusement fertiliser le sujet Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Crypto0
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mar. 07 janv. 2014 19:30
Status : Hors ligne

Re: [..] Décortiquer un string

#11

Message par Crypto0 »

Je vous remercie énormément, vous assurez un max. J'ai opté pour la solution de Mikell ( la plus courte des deux).
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Décortiquer un string

#12

Message par jguinch »

Si le problème est résolu, merci de mettre en [R] dans le sujet du premier message.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre