bonjour, je suis en train de developper une application qui genere du pdf a partir de modele en XML. pour faciliter la creation de ces modeles ( qui sont facilement tres long : jusqu'a 850 lignes pour une seule page en PDF ... ), je suis en train de creer un petit assistant en VB.NET. pour y voir un peu plus clair, je voudrais realiser une coloration syntaxique basique, genre avec trois couleurs pour : mot cle, attribut, valeur de l'attribut.
je suis parti sur une fonction utilisant des expressions reguliere, dans une rich textbox, ca donne ca : (ou area est ma richtextbox )
rien de bien complique, et ca fonctionne. les expressions regex on l'air correcte, dans la mesure ou il ne parcourt le fichier qu'une seule fois. le seul hic, c'est que c'est tres lent. Sur mon exemple de 850 lignes, il mets pratiquement 10 secondes !! alors qu'avec notepad++ c'est instantané... je n'en demande pas temps, mais j'aimerais savoir si vous connaissiez un algo vraiment rapide pour faire ca. voila, merci beaucoup !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Private Sub coloration() Dim save As Integer = area.SelectionStart Dim r, r2 As Regex Dim m, m2 As Match r = New Regex("< *([a-zA-z]*).*>") m = r.Match(area.Text) While m.Success area.Select(m.Groups(1).Index, m.Groups(1).Length) area.SelectionColor = Color.Aquamarine r2 = New Regex("([a-zA-Z]*) *=""([a-zA-Z]*)""") m2 = r2.Match(m.Value) While m2.Success area.Select(m.Index + m2.Groups(1).Index, m2.Groups(1).Length) area.SelectionColor = Color.Red area.Select(m.Index + m2.Groups(2).Index, m2.Groups(2).Length) area.SelectionColor = Color.Blue m2 = m2.NextMatch End While m = m.NextMatch End While area.SelectionStart = save End Sub
Partager