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 simplel'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
Partager