BandaAncha

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

buscar dentro de un archivo en vb.net

oreretaboy

Buenas gente:

necesito leer desde vb.net un archivo que me a seleccionado el usuario y tengo que buscar una cosa dentro del archivo que es de la siguiente manera:

uid="kJlSDPN3VwPOqCvWY4vdBxNftC1"

lo que me interesa de esa lectura que tengo que hacer es que me coja lo que esta entre comillas pero no se como acerlo ya que segun el archivo que elija el usuario esta en una linea o en otra y en una columna o en otra. alguien me puede decir como puedo leerlo??

muchas gracias

LineBenchmark

Lo puedes hacer mediante expresiones regulares.

Por ejemplo, y suponiendo que se ha leído el archivo de texto y se ha colocado en un RichTextBox(se puede hacer de muchas maneras diferentes)

Se buscará y mostrará todas las cadenas que contengan el uid (solo lo que hay entre comillas) , sea una, dos, tres, o la cantidad que sea que haya de uid´s:

 Dim r As Regex

 Dim m As Match r = New Regex("uid=" & Chr(34) & "s*([^" & Chr(34) & "]*)\s*", RegexOptions.IgnoreCase)

 Dim mc As MatchCollection = r.Matches(RichTextBox1.Text)

 If mc.Count > 0 Then

 For Each m In mc

 MessageBox.Show("El uid es: " & m.Result("$1"))

 Next

 End If

No te olvides de importar :

Imports System.Text.RegularExpressions

Slds. :)

🗨️ 6
oreretaboy

gracias. con lo que me dijistes al principio ya lo consegi sacar con una funcion parecida a la que as escrito.

muchas gracias

BocaDePez

gracias es un gran aporte solo queda aclarar que uid" es donde inicia el corte y termina en "

🗨️ 3
BocaDePez

HOla, me ha servido bastante su aportación,, solo que en mi caso tengo distintos archivos de texto en los que necesito sacar los 7 digitos posteriores en donde se encuentre la letra "F", lo unico que me falta es que la F no sea tomada en cuenta en los resultados.

Los archivos de texto no tienen comillas ni ningun otro separador, solo el numero de digitos siempre es 7 despues de una F... Por ejemplo: F87687668hyg7gd7

mi codigo:

For Each err As String In Directory.GetFiles("C:\Archivos de Validacion\Patente 3547", "*.err", SearchOption.TopDirectoryOnly)

"\") + 1).ToString

Dim Path As String = ("C:\Archivos de Validacion\Patente 3547\" & err)

Dim Content As String = vbNullString

With My.Computer.FileSystem

If .FileExists(Path) Then

Content = .ReadAllText(Path)

Dim R As Regex

Dim M As Match

'R = New Regex("[F](\d{7})")

R = New Regex("F" & "(\d{7})", RegexOptions.IgnoreCase)

Dim MC As MatchCollection = R.Matches(Content)

If MC.Count > 0 Then

For Each M In MC

Next

End If

Esto me pone en un listbox el resultado asi: F8011352,, cuando necesito que solo ponga los numeros... desde ya muchas gracias por su ayuda

🗨️ 2
LineBenchmark

Con un M.Result("$1") , recoge bien los 7 dígitos sin la F

Haz la prueba, asignando un valores a Content. Y sino, a las malas y de forma 'patata' haz un replace de la F por "" antes de meterlo en el listbox.

🗨️ 1
BocaDePez
BocaDePez
BocaDePez

buenas mira e intentado adaptar el código anterior a lo que necesito y no lo logro.

lo que tengo es un archivo de texto con lo siguiente.

to assist@ayudar

memorial service@funeral

not ready@no está preparado

not ready@no listo

-ocupo leer por ejemplo: to assist... para luego mostrar: ayudar en un label.

de antemano gracias y perdón por la molestia.