bonjour
j'ai une variable
exemple :
VariableText="[Gras]On apprend[/Gras] [Taille 1]tout à partir de zéro[/Taille 1]"
je voudrais la découpé selon les balises
comment pourrais je faire ??
bonjour
j'ai une variable
exemple :
VariableText="[Gras]On apprend[/Gras] [Taille 1]tout à partir de zéro[/Taille 1]"
je voudrais la découpé selon les balises
comment pourrais je faire ??
Il peut y avoir les caractères [ ou ] dans le texte entre les balises ?
non les crochets servent que pour les balises
Alors tu peux faire ça facilement avec une expression régulière.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 string maChaine = "[Gras]On apprend[/Gras] [Taille 1]tout à partir de zéro[/Taille 1]"; MatchCollection matches = Regex.Matches(maChaine, @"\[(.+?)\](.*?)\[/.+?\]"); foreach (Match match in matches) { string nomBalise = match.Groups[1].Value; string contenu = match.Groups[2].Value; }
du coup il faudrait que je remplace les variables "nombalise" et "contenu" par un tableau ??
ps : je précise, je suis pas très bon en csharp, moi je suis plutôt php ^^ mais là j'ai pas le choix, je dois bosser en csharp
re-edit : en faite ça devrait aller, je vais essayer de me débrouillé avec ça , c'est déjà super de ta part, merci beaucoup
ça fonctionne bien, mais le soucis c'est si par exemple j'ai une variable de ce type :
VariableText="On apprend[Gras]tout[/Gras] [Taille 1] à partir de zéro[/Taille 1]"
Du coup la partie on apprend saute
ou
VariableText="[Gras][Gras]tout[/Gras] [Taille 1] à partir de zéro[/Taille 1][/Gras]"
Du coup le deuxième balisage [gras] n'est pas pris en compte
enfin terminé
dur dur quand même
merci a toi StormimOn
voila je mets le code pour ceux que ça intéresse
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 string maChaine = ""; //maChaine = "je travaille |[Gras]On apprend[/Gras]| |[Taille 1]tout à partir de zéro[/Taille 1]|"; //maChaine = "|[None]je travaille [/None]||[Gras]On apprend[/Gras]| |[Taille 1]tout à partir de zéro[/Taille 1]|"; //maChaine = "je travaille |[Gras]On apprend[/Gras]| enfin je pense |[Taille 1]tout à partir de zéro[/Taille 1]| quoique"; //maChaine = "je travaille |[Gras]On apprend |[Taille 1] enfin je pense tout à partir de zéro[/Taille 1]|le retour [/Gras]| quoique"; maChaine = "je travaille |[Gras]On apprend[/Gras]| |[Taille 1]tout à partir de zéro[/Taille 1]||[Gras]fin[/Gras]| quoique"; string[] tab = maChaine.Split('|'); int NbrElementsTab = tab.Length; for (int i = 0; i < NbrElementsTab; i++) { // @ annule l'effet du car d'échappement \ // \[ \] => entre [ ] // () = groupement // . = n'importe quel caractère // + = 1 fois ou plus // ? = 0 ou 1 fois // * = 0 ou plusieurs fois // {1,} = 1 ou plusieurs fois MatchCollection matches = Regex.Matches(tab[i], @"\[(.+?)\](.*?)\[/.+?\]"); if (matches.Count > 0) // si balises trouvées { foreach (Match match in matches) { string nomBalise = match.Groups[1].Value; string contenu = match.Groups[2].Value; //Console.WriteLine(nomBalise); Console.WriteLine(contenu); } } else { if (tab[i] != "") { MatchCollection matches2 = Regex.Matches(tab[i], @"\[(.+?)\]([a-zA-Z0-9_ ]{1,})"); if (matches2.Count > 0) // si balises trouvées { foreach (Match match2 in matches2) { string nomBalise2 = match2.Groups[1].Value; string contenu2 = match2.Groups[2].Value; //Console.WriteLine(nomBalise2 + " testbalise2"); if (contenu2 != "") { Console.WriteLine(contenu2); } } } else { MatchCollection matches3 = Regex.Matches(tab[i], @"([a-zA-Z0-9_ ]{1,})\[(/.+?)\]"); if (matches3.Count > 0) // si balises trouvées { foreach (Match match3 in matches3) { string contenu3 = match3.Groups[1].Value; string nomBalise3 = match3.Groups[2].Value; //Console.WriteLine(nomBalise2 + " testbalise2"); if (contenu3 != "") { Console.WriteLine(contenu3); } } } else { Console.WriteLine(tab[i]); } } } } } Console.Read();
En fait, même si les balises pouvaient être imbriquées, on pourrait quand même le faire avec des regex... cf. ce post :
http://www.developpez.net/forums/d69...e/#post4035042
@cirdec49 : pense à utiliser les balises CODE stp (je les ai ajoutées pour cette fois), et à utiliser le bouton...
pour les balises code, j'y avais pensé mais je pensais qu'il y en avait pas ^^. Pour le "résolu" c'est un oubli désolé.![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager