none
Obtener el numero las lineas leidas

    Pregunta

  • Hola.

        Public Function LineCount(ByVal str As String) As Integer
            Return str.Split(ControlChars.Lf).Length
        End Function
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim txln() As String = My.Resources.LexO.Split
            Dim valor As String = TextBox1.Text
            For Each cntn As String In (txln)
                Dim nlns As Integer = CInt(LineCount(cntn))
                If cntn.Equals(valor) Then
                    RichTextBox1.AppendText(LineCount(cntn) & "  " & cntn & vbNewLine) 'Obtener NºLinea y Cadena.
                End If
            Next
        End Sub

    El código anterior lo uso para intentar obtener todas las líneas de un archivo, insertado en My.Resources, que contienen una cadena escrita en un TextBox.

    Puedo obtener todas las líneas que contiene dicha palabra, pero no el numero de línea de ésta.

    Agradezco la ayuda que puedan prestar para solucionar esta cuestión.


    Rafael FM

    sábado, 28 de enero de 2017 21:03

Respuestas

  • RafaelFM,

    Supuse que podría haber cero o una coincidencia como máximo. 

    En cualquier caso, se trata de una colección que puedes recorrerla a través de su índice:

    Dim txln() As String = My.Resources.LexO.Split(New Char() {vbCr & vbLf, vbLf},
    							   StringSplitOptions.RemoveEmptyEntries)
    							   
    For index = 0 To txln.GetLength(0) - 1
    	If txln(index).Equals(TextBox1.Text) Then
    		RichTextBox1.AppendText(String.Format("{0} {1}{2}", index, valor, Environment.NewLine))
    	End If
    Next


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta RafaelFM domingo, 29 de enero de 2017 0:16
    sábado, 28 de enero de 2017 23:16

Todas las respuestas

  • RafaelFM,

    Puedes utilizar el método IndexOf() de la clase Array para obtener el índice de la primera aparición de un valor en el array, en caso el valor no se encuentre el resultado será -1.

    Array.IndexOf (Método)

    Dim txln() As String = My.Resources.LexO.Split(New Char() {vbCr & vbLf, vbLf},
    							   StringSplitOptions.RemoveEmptyEntries)
    
    Dim Indice As Integer = Array.IndexOf(txln, TextBox1.Text)
    
    If Indice <> -1 Then '¿Se ha encontrado el valor en el array?
    	RichTextBox1.AppendText(String.Format("{0} {1}", Indice, TextBox1.Text))
    End If


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta RafaelFM sábado, 28 de enero de 2017 23:14
    • Desmarcado como respuesta RafaelFM domingo, 29 de enero de 2017 0:11
    sábado, 28 de enero de 2017 22:08
  • RafaelFM,

    Puedes utilizar el método IndexOf() de la clase Array para obtener el índice de la primera aparición de un valor en el array, en caso el valor no se encuentre el resultado será -1.

    Array.IndexOf (Método)

    Dim txln() As String = My.Resources.LexO.Split(New Char() {vbCr & vbLf, vbLf},
    							   StringSplitOptions.RemoveEmptyEntries)
    
    Dim Indice As Integer = Array.IndexOf(txln, TextBox1.Text)
    
    If Indice <> -1 Then '¿Se ha encontrado el valor en el array?
    	RichTextBox1.AppendText(String.Format("{0} {1}", Indice, TextBox1.Text))
    End If


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    Gracias Willams Morales

    Peno no consigo que se muestren todas las líneas que contiene los números de éstas y la palabra a buscar.

    Solo se muestra la primera aparición si uso "IndexOf" o la ultima si utilizo "LastIndexOf"

    De todos modos, en Array.IndexOf (Método), he encontrado la solución. -Error. Pensaba que lo conseguiría.


    Rafael FM



    • Editado RafaelFM domingo, 29 de enero de 2017 0:12
    sábado, 28 de enero de 2017 22:47
  • RafaelFM,

    Supuse que podría haber cero o una coincidencia como máximo. 

    En cualquier caso, se trata de una colección que puedes recorrerla a través de su índice:

    Dim txln() As String = My.Resources.LexO.Split(New Char() {vbCr & vbLf, vbLf},
    							   StringSplitOptions.RemoveEmptyEntries)
    							   
    For index = 0 To txln.GetLength(0) - 1
    	If txln(index).Equals(TextBox1.Text) Then
    		RichTextBox1.AppendText(String.Format("{0} {1}{2}", index, valor, Environment.NewLine))
    	End If
    Next


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta RafaelFM domingo, 29 de enero de 2017 0:16
    sábado, 28 de enero de 2017 23:16