kikou93
Messages postés417Date d'inscriptionmardi 4 février 2014StatutMembreDernière intervention24 septembre 2018
-
11 mars 2018 à 16:36
kikou93
Messages postés417Date d'inscriptionmardi 4 février 2014StatutMembreDernière intervention24 septembre 2018
-
15 mars 2018 à 20:45
Bonjour/Bonsoir,
Comme le titre l'indique, je voulais récupérer des données à partir d'un code HTML qui es coller dans une RichTextBox, puis les mettre dans une ListView à 3 colonnes
j'ai beau chercher je n'ai rien trouver, j'ai pensé à une méthode mais cela me permet de récupérer les données de la première la première ligne
Première Colonne -> Numéro de l'étape, exemple : "num_step":1," (le numéro de l'étape qui sera afficher dans la ListView est 1)
Deuxième Colonne -> Quantité, exemple : "quantity":{"*":6} (la quantité qui sera afficher dans la ListView est 6)
"quantity":[] (comme il y a pas de valeur, la cellule en question restera vide)
Troixième Colonne -> Nécessaire, exemple : "necessary":"*:34" (la quantité Nécessaire qui sera afficher dans la ListView est 34)
"necessary":"" (comme il y a pas de valeur, la cellule en question restera vide)
merci d'avance pour votre aide
vb95
Messages postés3417Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention20 mai 2023165 Modifié le 11 mars 2018 à 18:32
Bonjour
Si tu récupères bien les données pour la première ligne qu'est-ce qui te bloque pour récupérer les données des autres lignes ?
On remarque d'abord que chaque ligne comporte 3 éléments et que chaque ligne est séparée par },{
On ne peut prendre que la virgule car les 3 éléments à l'intérieur d'une ligne sont eux aussi séparés par une virgule
Donc un Split sur chaque ligne avec },{ comme séparateur devrait te donner un tableau de lignes
Dans chaque élément de ce tableau de lignes tu refais un Split sur chaque élément avec la virgule
Cela te donne un sous-tableau de 3 éléments : num_step , quantity et necessary
Dans chacun des éléments de ce sous-tableau suffit de récupérer la valeur numérique si celle-ci est présente
1) le tableau des lignes
[{"num_step":1,"quantity":{"*":4},"necessary":"*:6"
"num_step":2,"quantity":{"*":11},"necessary":""
"num_step":3,"quantity":{"*":7},"necessary":""
"num_step":4,"quantity":{"*":4},"necessary":""
"num_step":5,"quantity":[],"necessary":"*:54"
etc ........
2) le sous-tableau de la première ligne avec les 3 éléments de ta listview
[{"num_step":1
"quantity":{"*":4}
,"necessary":"*:6"
3) le sous-tableau de la seconde ligne
"num_step":2
"quantity":{"*":11}
"necessary":""
Petite remarque : si dans les éléments quantity et necessary on trouve le caractère * il y a une valeur numérique à trouver
kikou93
Messages postés417Date d'inscriptionmardi 4 février 2014StatutMembreDernière intervention24 septembre 20181 11 mars 2018 à 19:42
la méthode consiste à rechercher le string qui est entre deux string
par exemple , rechercher le string qui est entre "num_step": et ,"quantity" mais s'il le trouve dans la première ligne, il ne va pas plus loin
pour le Split je ne l'ai jamais utilisé, mais j'ai trouvé un exemple bien expliqué
pour le test j'ai créé 2 RichTextBox, la première pour le texte et la 2e pour le résultat
Voici le code :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim I As Integer Dim aryTextFile() As String aryTextFile = RichTextBox1.Text.Split("},{") For I = 0 To UBound(aryTextFile) RichTextBox2.Text = RichTextBox2.Text & aryTextFile(I) & ChrW(10) Next End Sub
kikou93
Messages postés417Date d'inscriptionmardi 4 février 2014StatutMembreDernière intervention24 septembre 20181 15 mars 2018 à 20:44
Bonsoir jordane45,
Désolé de ne pas t'avoir répondu plus tôt
non je t'assure que c'est du HTML vu que je suis sur Google Chrome et je fait clic droit puis je choisi inspecter pour copier une partie du code .
vb95
Messages postés3417Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention20 mai 2023165 Modifié le 11 mars 2018 à 22:06
Salut Kikou93
C'est normal que le résultat du split ne fonctionne pas car split ne prend qu'un seul caractère comme séparateur
J'ai trouvé une solution très rapide:
2 Textbox, une Listview et un bouton
La première TextBox (nommée Chainehtml) reçoit tout le code HTML et la seconde TextBox (nommée Tableauchainehtml) reçoit les différents éléments de ce même code ( un élément par ligne )
Prévoir la ScrollBar vertical pour cette seconde TextBox
La Listview est en mode Détails avec les 3 colonnes
Et voici le code de la Form
Public Class Form1
Private Texte As String
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Texte = Chainehtml.Text
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim arrayTextFile As String() = Chainehtml.Text.Split(","c) ' pour chaque paramètre
For i = 0 To arrayTextFile.Length - 1
Tableauchainehtml.Text = Tableauchainehtml.Text & arrayTextFile(i) & Environment.NewLine
Next
Dim Index = 0
For i = 0 To (arrayTextFile.Length \ 3) - 1
' à chaque tour de boucle 3 paramètres donc une ligne pour la listview
ListView1.Items.Add(New ListViewItem(New String() {Parametre(arrayTextFile(Index)), Parametre(arrayTextFile(Index + 1)), Parametre(arrayTextFile(Index + 2))}))
Index = Index + 3
Next
End Sub
Private Function Parametre(Chaine As String) As String
Dim Retournombre As String = String.Empty
For j = 0 To Chaine.Length - 1
If Chaine.Substring(j, 1) >= "0" And Chaine.Substring(j, 1) <= "9" Then
Retournombre = Retournombre & Chaine.Substring(j, 1)
End If
Next
Return Retournombre
End Function
End Class
</code>
En cas de soucis envoie moi un message privé avec ton adresse email et je t'enverrais le zip du projet que j'ai fait
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
kikou93
Messages postés417Date d'inscriptionmardi 4 février 2014StatutMembreDernière intervention24 septembre 20181 15 mars 2018 à 20:45
Bonsoir vb95,
Ton code fonctionne très bien
Merci beaucoup pour ton aide
11 mars 2018 à 19:42
par exemple , rechercher le string qui est entre "num_step": et ,"quantity"
mais s'il le trouve dans la première ligne, il ne va pas plus loin
pour le Split je ne l'ai jamais utilisé, mais j'ai trouvé un exemple bien expliqué
pour le test j'ai créé 2 RichTextBox, la première pour le texte et la 2e pour le résultat
Voici le code :
Voici le résultat :
mais on dirait qu'il séparent même quand il y a que ça },