Tengo un archivo de texto con algunas líneas de texto.

Quiero recorrer cada línea hasta un punto que quiero es encontrado, entonces se mostrará en la pantalla, en la forma de una etiqueta.

*Estoy buscando el elemento a través de un cuadro de texto.

Que es, en sudo:

For i = 0 To number of lines in text file
    If txtsearch.text = row(i).text Then
        lbl1.text = row(i).text
Next i
  • Podría haber más de una aparición? Una vez encontrado lo que quieres, la palabra o el conjunto de la línea? Por favor, dar más detalles….
  • Lo siento, después de volver a leerla, hizo sonar un poco extraño, quiero que todo el texto de la línea. No habrá más de una ocurrencia de una línea.
  • Puede agregar una captura de pantalla de la interfaz de usuario? Ejemplo de archivo de entrada? Ejemplo de la salida del programa?

3 Comentarios

  1. 5

    Puede utilizar el Archivo.ReadLines Método para iterar a través de su archivo, una línea a la vez. He aquí un ejemplo sencillo:

        Dim Term As String = "Your term"
        For Each Line As String In File.ReadLines("Your file path")
            If Line.Contains(Term) = True Then
                ' Do something...Print the line
                Exit For
            End If
        Next
    • Una línea a la vez sería ReadLines, RealAllLines es leer todas las líneas a la vez.
    • Gracias, esto funciona.
    • En realidad, ambos trabajan. ReadAllLines hecho de leer toda la línea a la vez, pero todavía podemos iterar a través de ellos una línea a la vez. Sírvanse proporcionar información adicional sobre su downvote razones.
    • Yo por lo general ya sea downvote o dejar un comentario. Mi razonamiento es que downvoting no ayudar a la persona a mejorar. Pero a veces simplemente no puedo encontrar las palabras, o la persona es tan terco y/o arrogante, así que este es el momento de downvote. Usted dice que el uso de ReadAllLines para recorrer una línea a la vez. Porque iteración no asume streaming de procesamiento, hay confusión. Su mensaje puede ser malinterpretado por el lector. StackOverflow es a menudo tratada como una «fuente de verdad». Ahora, porque stream es una especie de una línea en un tiempo (incluso a través de lo contrario no es cierto), la verdad es sesgada.
    • Readlines sólo es necesario cuando se lee, por otro lado ReadAllLines se colocan en una matriz antes de que puede ser iterado y comprobado. Así como está, su respuesta es buena y más que suficiente. En otra nota a mi respuesta, Archivo.ReadLines es un poco más lento que el de raw StreamReader, pero no significativamente más lento. Este es el resultado esperado, ya que el Archivo.ReadLines simplemente hace un ReadLinesIterator internamente que utiliza un StreamReader y hace algo más de comprobar a lo largo del camino. He aquí algunos de evaluación comparativa de pruebas para confirmar estas cc.davelozinski.com/c-sharp/fastest-way-to-read-text-files
    • Línea de fondo, OP podría utilizar arroyos, basado en su requisito. La respuesta anterior no recomienda arroyos. Por lo tanto, no upvote de mí. No downvote, porque no es malo, solo es ineficiente.
    • Estoy de acuerdo

  2. 3

    Aquí una función que va a escupir de vuelta en la cadena de la fila que contiene el término de búsqueda…

      Public Shared Function SearchFile(ByVal strFilePath As String, ByVal strSearchTerm As String) As String
        Dim sr As StreamReader = New StreamReader(strFilePath)
        Dim strLine As String = String.Empty
    
        Try
            Do While sr.Peek() >= 0
                strLine = String.Empty
                strLine = sr.ReadLine
                If strLine.Contains(strSearchTerm) Then
                    sr.Close()
                    Exit Do
                End If
            Loop
    
            Return strLine
        Catch ex As Exception
            Return String.Empty
        End Try
      End Function

    Utilizar la función usted puede hacer esto…

     Dim strText As String = SearchFile(FileName, SearchTerm)
     If strText <> String.Empty Then
       Label1.Text = strText
     End If
    • Para ser coherente con mis sugerencias en la otra respuesta, yo upvoted su respuesta, debido a que se recomienda arroyos – mantenerlo simple.
    • Estoy tratando de usar esta solución para algo muy similar, pero para encontrar un valor entero (y SÓLO un valor entero) entre varias filas de CSV, cada fila contiene dos dobles y uno entero. He cambiado el segundo parámetro de la función a «ByVal intSearchNum Como Entero», pero todavía es devolver un cierto incluso cuando se detecta el pasado-en el valor entero como parte de uno de los dobles. Así que una fila que contiene un doble valor de 6.67 vuelve como la de un partido a un valor entero de 67, lo que NO quiero.
  3. 0

    BUCLE Y CONSEGUIR TODOS LOS ARCHIVOS XML DE DIRECTORIO SI QUEREMOS TEXTFILES PONER «*.txt» EN LUGAR DE «*xml»

    Dim Directorio Como Nuevo IO.DirectoryInfo(Ruta De Acceso)

        Dim allFiles As IO.FileInfo() = Directory.GetFiles("*.xml")
        allFiles = allFiles.OrderByDescending(Function(x) x.FullName).ToArray()
        Dim singleFile As IO.FileInfo
    
    
        For Each singleFile In allFiles
            'ds.ReadXml(singleFile)
            xd.Load(singleFile.FullName)
    
            Dim nodes As XmlNodeList = xd.DocumentElement.SelectNodes("/ORDER/ORDER_HEADER")
            Dim ORDER_NO As String = " "
            For Each node As XmlNode In nodes
                If Not node.SelectSingleNode("ORDER_NO") Is Nothing Then
                    ORDER_NO = node.SelectSingleNode("ORDER_NO").InnerText
                End If
            Next
    
        Next

Dejar respuesta

Please enter your comment!
Please enter your name here