Page 1 sur 1
[..] Décortiquer un string
Posté : sam. 18 janv. 2014 10:57
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 :
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.
Re: [..] Décortiquer un string
Posté : sam. 18 janv. 2014 11:41
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"

:
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
Re: [..] Décortiquer un string
Posté : sam. 18 janv. 2014 11:46
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)
Re: [..] Décortiquer un string
Posté : sam. 18 janv. 2014 12:39
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)

Re: [..] Décortiquer un string
Posté : sam. 18 janv. 2014 12:48
par Tlem
Que de choix ...

Re: [..] Décortiquer un string
Posté : sam. 18 janv. 2014 13:00
par mikell
Ben oui, qu'est ce que tu veux, il pleut ...

Re: [..] Décortiquer un string
Posté : sam. 18 janv. 2014 18:52
par jchd
Oui, mais ce sont des perles de codes qui pleuvent et fertilisent ce sujet !
Re: [..] Décortiquer un string
Posté : sam. 18 janv. 2014 19:03
par Tlem
Magnifique Jean-Christophe. Tu es donc d'humeur fleur bleu aujourd'hui.

Re: [..] Décortiquer un string
Posté : sam. 18 janv. 2014 21:23
par jchd
Surtout tout émoustillé de voir un string décortiqué de mille façons par autant de praticiens empressés

Re: [..] Décortiquer un string
Posté : sam. 18 janv. 2014 22:18
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

Re: [..] Décortiquer un string
Posté : dim. 19 janv. 2014 17:18
par Crypto0
Je vous remercie énormément, vous assurez un max. J'ai opté pour la solution de Mikell ( la plus courte des deux).
Re: [..] Décortiquer un string
Posté : dim. 19 janv. 2014 18:17
par jguinch
Si le problème est résolu, merci de mettre en [R] dans le sujet du premier message.