none
Listbox busqueda de datos y separacion RRS feed

  • Pregunta

  • Saludos, mi pregunta es como puedo buscar en un listado de ListBox texto parecidos es decir:



    Datos en ListBox

    D:\fruta\manzana.jpg
    D:\peras.doc
    D:\frutas\naranjas.jpg
    D:\frutas\frutas de dia\fresa.jpg
    D:\desayuno\frutas de dia\manzana.doc
    D:\desayuno\frutas de dia\fresa.doc
    D:\frutas\frutas de dia\manzana.jpg
    D:\recetas2\manzana.txt



    Deseo buscar por ejemplo los que digan manzana me de en otro ListBox el listado de los que se encontraron de ellos sin importar la extension con todo y la ruta completa.

    D:\fruta\manzana.jpg
    D:\desayuno\frutas de dia\manzana.doc
    D:\frutas\frutas de dia\manzana.jpg
    D:\recetas2\manzana.txt

    lunes, 15 de enero de 2018 20:46

Respuestas

  • Hola

    Sin duda alguna lo que está ocurriendo es un error de sintaxis para visual basic, por ello es el error intenta con lo siguiente:

    For Each item As Object In ListBox1.Items
    
                If (item.ToString.ToUpper()).Contains("MANZANA") Then
    
                    Listbox2.Items.Add(item)
    
                End If
    
     Next
    Saludos

    Brayan De la Cruz
    Lima - Perú

    • Marcado como respuesta Cael1020 martes, 16 de enero de 2018 4:44
    martes, 16 de enero de 2018 3:07
  • Otra forma puede ser utlilizando expresiones regulares, aprovechando el punto de la extensión (.) y con esto clasificar la busqueda, seleccionando un item del ListBox1 ej:

    a nivel formulario colocamos un string publico

     Public buscar As String = ""

    Y en el evento SelectedIndexChanged el siguiente código

      Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
            ListBox2.Items.Clear()
    
            Dim patron As String = "[a-zA-Z]+\."
            Dim reg As New Regex(patron, RegexOptions.IgnoreCase)
            Dim Mch As MatchCollection = reg.Matches(ListBox1.GetItemText(ListBox1.SelectedItem))
            buscar = Mch.Item(0).ToString
            '____________________________________________________________
            For Each item As Object In ListBox1.Items
                patron = buscar
                reg = New Regex(patron, RegexOptions.IgnoreCase)
                Mch = reg.Matches(item)
                If Mch.Count > 0 Then
    
                    For Each M As Match In Mch
                        ListBox2.Items.Add(item)
                    Next
                End If
            Next
        End Sub

    De esta forma seleccionando un item cargará los demás similares

    Saludos


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗


    • Editado Marcelo PF martes, 16 de enero de 2018 4:42
    • Marcado como respuesta Pablo Rubio miércoles, 17 de enero de 2018 16:44
    • Desmarcado como respuesta Pablo Rubio miércoles, 17 de enero de 2018 16:44
    • Marcado como respuesta Pablo Rubio jueves, 18 de enero de 2018 16:52
    martes, 16 de enero de 2018 4:41

Todas las respuestas

  • Foreach (item as object in listbox1.items)

    If (Upper(item.ToString()).Contains("MANZANA")

    Listbox2.Items.Add(item)

    endif

    Next



    • Editado vyrcyrus_ lunes, 15 de enero de 2018 22:38
    • Propuesto como respuesta Pablo Rubio lunes, 15 de enero de 2018 23:18
    lunes, 15 de enero de 2018 22:37
  • Gracias por ayudarme, me aparece un error yo utilizo VB 2010 NET Framework 4 en mi proyecto

    pero me sale error :(

    martes, 16 de enero de 2018 0:54
  • Hola

    Sin duda alguna lo que está ocurriendo es un error de sintaxis para visual basic, por ello es el error intenta con lo siguiente:

    For Each item As Object In ListBox1.Items
    
                If (item.ToString.ToUpper()).Contains("MANZANA") Then
    
                    Listbox2.Items.Add(item)
    
                End If
    
     Next
    Saludos

    Brayan De la Cruz
    Lima - Perú

    • Marcado como respuesta Cael1020 martes, 16 de enero de 2018 4:44
    martes, 16 de enero de 2018 3:07
  • Otra forma puede ser utlilizando expresiones regulares, aprovechando el punto de la extensión (.) y con esto clasificar la busqueda, seleccionando un item del ListBox1 ej:

    a nivel formulario colocamos un string publico

     Public buscar As String = ""

    Y en el evento SelectedIndexChanged el siguiente código

      Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
            ListBox2.Items.Clear()
    
            Dim patron As String = "[a-zA-Z]+\."
            Dim reg As New Regex(patron, RegexOptions.IgnoreCase)
            Dim Mch As MatchCollection = reg.Matches(ListBox1.GetItemText(ListBox1.SelectedItem))
            buscar = Mch.Item(0).ToString
            '____________________________________________________________
            For Each item As Object In ListBox1.Items
                patron = buscar
                reg = New Regex(patron, RegexOptions.IgnoreCase)
                Mch = reg.Matches(item)
                If Mch.Count > 0 Then
    
                    For Each M As Match In Mch
                        ListBox2.Items.Add(item)
                    Next
                End If
            Next
        End Sub

    De esta forma seleccionando un item cargará los demás similares

    Saludos


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗


    • Editado Marcelo PF martes, 16 de enero de 2018 4:42
    • Marcado como respuesta Pablo Rubio miércoles, 17 de enero de 2018 16:44
    • Desmarcado como respuesta Pablo Rubio miércoles, 17 de enero de 2018 16:44
    • Marcado como respuesta Pablo Rubio jueves, 18 de enero de 2018 16:52
    martes, 16 de enero de 2018 4:41