Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Eleкtro en 9 Enero 2013, 01:10 am



Título: [SOLUCIONADO] Buscar todas las variantes de un string
Publicado por: Eleкtro en 9 Enero 2013, 01:10 am
¿Alguien me puede recordar como se hacia esto?

Olvidé que método se usa para esto xD

Código
  1. Dim STR = "abc"
  2. If Cosa.Contains(STR) Then ...
  3.  
  4. ' Quiero que busque todas las variantes:
  5. ' Abc
  6. ' ABc
  7. ' ABC
  8. ' aBC
  9. ' abC
  10. ' etc...


Título: Re: Buscar todas las variantes de un string
Publicado por: seba123neo en 9 Enero 2013, 02:07 am
hay varias formas y algoritmos sobre todo recursivos, pero aca paso una bastante reducida.

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.        Dim vLetras As String = "abcABC" ' Letras que se van a usar
  5.        Dim vSize As Integer = 3 ' Longitud del resultado
  6.  
  7.        Dim vLista As IEnumerable(Of String) = vLetras.Select(Function(x) x.ToString())
  8.  
  9.        For i As Integer = 0 To vSize - 2
  10.            vLista = vLista.SelectMany(Function(x) vLetras, Function(x, y) x + y)
  11.        Next
  12.  
  13.        For Each t As String In vLista
  14.            Debug.WriteLine(t)
  15.        Next
  16.    End Sub
  17. End Class


Título: Re: Buscar todas las variantes de un string
Publicado por: Eleкtro en 9 Enero 2013, 15:56 pm
Gracias, pero no me aclaro, ¿Como puedo adaptarla a mis necesidades?

Tengo una "Search bar" que debe buscar resultados en los archivos de texto de "My.Resources", y mostrar cada resultado encontrado en el listview.
Lo único que quiero es hacer el texto a buscar en modo "Ignorecase" xD

(http://img7.imageshack.us/img7/228/prtscrcapturern.jpg)


Al pulsar el botón "Buscar":
Código
  1. For Each Dict As DictionaryEntry In ResourceSet.OfType(Of Object)()
  2.            If TypeOf (Dict.Value) Is String Then
  3.                Find_Delimited_Text(My.Resources.ResourceManager.GetObject(Dict.Key), ";", TextBox_Buscar.Text)


Find_Delimited_Text sub:
Código
  1.    Public Sub Find_Delimited_Text(ByVal TextFile As String, ByVal TextDelimiter As String, ByVal PatternSTR As String)
  2.  
  3.        Dim vLetras As String = PatternSTR
  4.        Dim vSize As Integer = PatternSTR.Length  ' ¿?
  5.  
  6.        Dim vLista As IEnumerable(Of String) = vLetras.Select(Function(x) x.ToString())
  7.  
  8.        For i As Integer = 0 To vSize - 2
  9.            vLista = vLista.SelectMany(Function(x) vLetras, Function(x, y) x + y)
  10.        Next
  11.  
  12.        For Each t As String In vLista
  13.            MsgBox(t)
  14.        Next
  15.  
  16.        Dim Listview_Row_STR(4) As String
  17.        Dim Listview_Item = New ListViewItem(Listview_Row_STR)
  18.        Dim TextDelimited As String()
  19.        Dim delimiter As String = TextDelimiter
  20.        Dim fileContent As String = TextFile
  21.  
  22.        Dim stringStream As New System.IO.StringReader(fileContent)
  23.        Using parser As New Microsoft.VisualBasic.FileIO.TextFieldParser(stringStream)
  24.            parser.SetDelimiters(TextDelimiter)
  25.            While Not parser.EndOfData
  26.                TextDelimited = parser.ReadFields()
  27.                If TextDelimited(0).Contains(PatternSTR) Then
  28.                    field_find_number += 1
  29.                    Listview_Row_STR(0) = field_find_number
  30.                    Listview_Row_STR(1) = TextDelimited(0)
  31.                    Listview_Row_STR(2) = TextDelimited(1)
  32.                    Listview_Row_STR(3) = TextDelimited(2)
  33.                    Listview_Item = New ListViewItem(Listview_Row_STR)
  34.                    ListView.Items.Add(Listview_Item)
  35.                End If
  36.            End While
  37.        End Using
  38.    End Sub



EDITO:
Bueno, creo que convirtiendo los dos strings a lowercase da menos vueltas y funciona.

Código
  1. If TextDelimited(0).ToLower.Contains(PatternSTR.ToLower) Then

Saludos!