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 :

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.

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" :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

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)
:mrgreen:

Re: [..] Décortiquer un string

Posté : sam. 18 janv. 2014 12:48
par Tlem
Que de choix ... :mrgreen:

Re: [..] Décortiquer un string

Posté : sam. 18 janv. 2014 13:00
par mikell
Ben oui, qu'est ce que tu veux, il pleut ... :roll: :mrgreen:

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. :lol:

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 :shock:

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 Image

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.