Bonjour,
Je voulais savoir si c'était possible de faire un "between" avec linq entre deux chaines caractères.
exemple :
"A"
"AA"
"AB""
"AC"
"B"
"BA"
"BB"
"BC"
"C"
"CA"
"CB"
between "A" to "B"
result :
"A"
"AA"
"AB""
"AC"
"B"
Merci.
Bonjour,
Je voulais savoir si c'était possible de faire un "between" avec linq entre deux chaines caractères.
exemple :
"A"
"AA"
"AB""
"AC"
"B"
"BA"
"BB"
"BC"
"C"
"CA"
"CB"
between "A" to "B"
result :
"A"
"AA"
"AB""
"AC"
"B"
Merci.
je n'ai aucune idee comment le faire mais tu peux faire cela :
NOTE : tu dois avoir :
textbox1 [pour entrer une valeur de debut comme "A" dans ton exemple]
textbox2 [pour entrer une valeur de fin comme "B" dans ton exemple]
listbox1 [pour afficher tous les options ]
listbox2 [pour afficher les options selectionnee]
button1 [pour commencer le travail ]
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 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ListBox1.Items.Add("A") ListBox1.Items.Add("AB") ListBox1.Items.Add("AC") ListBox1.Items.Add("B") ListBox1.Items.Add("BA") ListBox1.Items.Add("BB") ListBox1.Items.Add("BC") ListBox1.Items.Add("C") ListBox1.Items.Add("CA") ListBox1.Items.Add("CB") ListBox1.Items.Add("CC") End Sub Sub between(ByVal char1 As String, ByVal char2 As String) For Each charactere In ListBox1.Items If charactere.startswith(char1) Then ListBox2.Items.Add(charactere.ToString) ElseIf charactere = char2 Then ListBox2.Items.Add(charactere.ToString) End If Next End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click between(TextBox1.Text, TextBox2.Text) End Sub End Class
malheureusement cela selectionne seulement les options commencant par "A" [dans ton exemple "A","AB","AC"..] et la premiere dans les serie de "B" ["B"] , je pense que tu peux arriver a ce que tu veux si tu change les lettres ["A","AB","AC"] avec des chiffres [1,2,3...] et apres tu utilise :
ou qqch comme ca , ce code peut meme pas fonctionner je suis aussi un debutant alors desole
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 For i=a to b 'ou a est le debut est b et la fin listbox2.items.add(charactere.tostring & i.tostring) Next
Between function.zip
voila j'ai fait un exemple qui affiche les chiffres entre char1 [chiffre de debut] et char2 [chiffre de fin] entree par l'utilisateur, du meme facon tu peut l'utiliser pour "A","B" seulement il faut associee les lettres avec des chiffre et les executer selon la selection , aussi je pense il est possible de le faire avec "A","AB","AC" si tu utilise la meme facon mais en deux etages [ex : 1.1 , 1.2 ,1.3]
Bonjour,
J'ignore quel type de liste tu utilises mais ça devrait ressembler à quelque chose comme ceci:
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 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim Liste As New List(Of String) Liste.Add("A") liste.Add("AA") Liste.Add("AB") liste.Add("AC") liste.Add("B") liste.Add("BA") liste.Add("BB") liste.Add("BC") liste.Add("C") liste.Add("CA") liste.Add("CB") Dim St As String = "" For Each Ligne As String In LignesBetween(Liste, "A", "B") St &= Ligne & Environment.NewLine Next MsgBox(St) End Sub Private Function LignesBetween(ByVal TotalLignes As List(Of String), ByVal PremierCHR As String, ByVal DernierCHR As String) As List(Of String) Dim Result As New List(Of String) Dim AGarder As Boolean = False For Each Str As String In TotalLignes If AGarder = True Then Result.Add(Str) If Str = PremierCHR Then AGarder = True Result.Add(Str) End If If Str = DernierCHR Then AGarder = False Next Return Result End Function
comment faire compliqué quand on peut faire simple l'ordre lexicographique fait déjà tout le boulot
De là, c'est pas bien dur d'en faire une fonction au besoin si l'on veut paramétrer les bornes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ' input contient les éléments initiaux Dim output = input.Where (Function (str) "A" <= str AndAlso str <= "B")
Oui mais...
Encore plus compliqué:
Ou encore :
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 Dim Liste As New List(Of String) Liste.Add("A") Liste.Add("AA") Liste.Add("AB") Liste.Add("AC") Liste.Add("B") Liste.Add("BA") Liste.Add("BB") Liste.Add("BC") Liste.Add("C") Liste.Add("CA") Liste.Add("CB") Dim Str As String = "," & String.Join(",", Liste) & "," Dim Premier As String = ",A," Dim Deuxieme As String = ",B," 'Str = Str.Substring(Str.LastIndexOf(Deuxieme) + Deuxieme.Length) Str = Str.Replace((Str.Substring(Str.LastIndexOf(Deuxieme) + Deuxieme.Length)), "") For Each St As String In Str.Substring(Str.LastIndexOf(Premier)).Split(","c) If St.Length > 0 Then MessageBox.Show(St) Next
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 Dim Liste As New List(Of String) Liste.Add("A") Liste.Add("AA") Liste.Add("AB") Liste.Add("AC") Liste.Add("B") Liste.Add("BA") Liste.Add("BB") Liste.Add("BC") Liste.Add("C") Liste.Add("CA") Liste.Add("CB") Dim Str As String = ",," & String.Join(",", Liste) & "," Dim Premier As String = ",A," Dim Deuxieme As String = ",B," Str = (Premier & Str.Split(New String() {Premier}, StringSplitOptions.RemoveEmptyEntries)(1)).Split(New String() {Deuxieme}, StringSplitOptions.RemoveEmptyEntries)(0) & Deuxieme For Each St As String In Str.Split(","c) If St.Length > 0 Then MessageBox.Show(St) Next
Et l'intérêt de faire plus compliqué que nécessaire ?
Sans parler du fait, que nulle part il n'a été mentionné que les entrées seraient forcément triées par ordre lexicographique ; tant mieux si c'est le cas mais dans le cas contraire ça ne fonctionnera plus idem si jamais une des bornes n'est pas présente textuellement dans la liste (après tout rien n'interdit de chercher entre "A" et "B" dans une liste qui ne contient ni l'un ni l'autre)
Salut Sehnsucht,
Oui tu as raison; aucun intérêt... sauf dans une éventuelle démarche de démonstration des nombreuses possibilités
Concernant les erreurs, bien sur qu'elles vont se produire si l'un des éléments est manquant, mais je suis bête et discipliné, je ne vois aucune mention d'une quelconque gestion des erreurs dans la question de notre demandeur (qui d'ailleurs nous avons perdu de vue)
Comme tu dis il faudrait qu'il nous donne plus d'éléments concernant ses données.
Bref... il est presque midi chez moi et je n'arrive pas trop à réfléchir le ventre vide
A+
Partager