IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

linq Between entre deux strings


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2013
    Messages : 21
    Points : 18
    Points
    18
    Par défaut linq Between entre deux strings
    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.

  2. #2
    Candidat au Club
    Homme Profil pro
    programmeur debutant
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : programmeur debutant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    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 :
    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
    ou qqch comme ca , ce code peut meme pas fonctionner je suis aussi un debutant alors desole

  3. #3
    Candidat au Club
    Homme Profil pro
    programmeur debutant
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : programmeur debutant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    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]

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    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

  5. #5
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    comment faire compliqué quand on peut faire simple l'ordre lexicographique fait déjà tout le boulot
    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")
    De là, c'est pas bien dur d'en faire une fonction au besoin si l'on veut paramétrer les bornes.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    Oui mais...
    Encore plus compliqué:
    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
    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
     
    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

  7. #7
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    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)

  8. #8
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    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+

Discussions similaires

  1. Echange de valeurs entre deux Strings
    Par Daborem dans le forum Débuter
    Réponses: 6
    Dernier message: 31/05/2015, 10h02
  2. BETWEEN entre deux date
    Par info3licen dans le forum Développement
    Réponses: 2
    Dernier message: 24/06/2011, 20h08
  3. Rechercher partie commune entre deux string
    Par laurent.brechon dans le forum Langage
    Réponses: 2
    Dernier message: 19/07/2010, 17h27
  4. Requette Between entre deux Timestamp
    Par DamienG dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/06/2007, 17h20
  5. [.NET VC++] ou exclusif entre deux String
    Par benoitB dans le forum MFC
    Réponses: 7
    Dernier message: 25/11/2003, 12h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo