none
Extraer Valores de un Log

    Pregunta

  • Buenas tardes,

    Antes de nada daros las gracias pues estoy aprendiendo muchísimo con vuestra ayuda.

    Ahora me encuentro con un problema a la hora de separar datos.

    Tengo el siguiente fichero:

    -----------------------------------------------------------------------------------------

    ..................... Barcade 
     .                      NAME: JLB - P/N:BB-ASCOM12-00 - S/N:0000007 - REV:REV. 02
     .                      NAME: ABCDEO0 - P/N:001 - S/N:0022 - REV:0 
     .                      NAME: ABCDEO1 - P/N:002 - S/N:0023 - REV:0 

    -----------------------------------------------------------------------------------------

    Quisiera extraer para poder introducirlos en una BBDD:
    JLB BB-ASCOM12-00 0000007  REV.02
    ABCDEO0 001 0
    ABCDEO1 002 0

    He utilizado el siguiente código pero sólo me saca JLB ABCDEO0 y ABCDEO1:
    --------------------------------------------------------------------------------------

     Dim objReader As New StreamReader(keyDireccionLog)
            Dim sLine As String = ""
            Dim matriz(1, 4) As String
            Do
                sLine = objReader.ReadLine() ' Vas leyendo cada línea
                If Not sLine Is Nothing Then
                    'If InStr(sLine, "NAME: ACL") > 0 Then
                    If InStr(sLine, "NAME: ") > 0 Then
                        Dim Valor As String = Mid(sLine, 30, 38)
                        If InStr(Valor, "P/N:") > 0 Then
                            'Dim pn As String = Mid(Valor, 0)
                            Dim part = Valor.Substring(0, Valor.IndexOf("-"))
                            txtvalores.Text = txtvalores.Text + part + vbCrLf
                            matriz(0, 0) = part
                        End If
                   End If
                End If
            Loop Until sLine Is Nothing
            objReader.Close()
        End Sub



    ---------------------------------------------------------------------

    Cualquier ayuda os lo agradeceré.

    Javi

    jueves, 6 de octubre de 2016 15:57

Respuestas

  • Imports System.Text.RegularExpressions
    
    Module Module1
    
        Sub Main()
            'Dim s As String = "NAME: JLB - P/N:BB-ASCOM12-00 - S/N:0000007 - REV:REV. 02"
            'Dim s As String = "NAME: ABCDEO0 - P/N:001 - S/N:0022 - REV:0"
            Dim s As String = "NAME: ABCDEO1 - P/N:002 - S/N:0023 - REV:0"
    
            Dim m As Match = Regex.Match(s, "NAME:(.+)- P/N:(.+)- S/N:(.+)- REV:(.+)")
    
            If (m.Success) Then
                For k = 1 To 4
                    Console.WriteLine(m.Groups(k).Value.Trim)
                Next
            End If
    
            Console.ReadKey()
        End Sub
    
    End Module


    • Editado miqui quilmes jueves, 6 de octubre de 2016 16:45
    • Marcado como respuesta JaviLin viernes, 7 de octubre de 2016 6:36
    jueves, 6 de octubre de 2016 16:43

Todas las respuestas

  • Imports System.Text.RegularExpressions
    
    Module Module1
    
        Sub Main()
            'Dim s As String = "NAME: JLB - P/N:BB-ASCOM12-00 - S/N:0000007 - REV:REV. 02"
            'Dim s As String = "NAME: ABCDEO0 - P/N:001 - S/N:0022 - REV:0"
            Dim s As String = "NAME: ABCDEO1 - P/N:002 - S/N:0023 - REV:0"
    
            Dim m As Match = Regex.Match(s, "NAME:(.+)- P/N:(.+)- S/N:(.+)- REV:(.+)")
    
            If (m.Success) Then
                For k = 1 To 4
                    Console.WriteLine(m.Groups(k).Value.Trim)
                Next
            End If
    
            Console.ReadKey()
        End Sub
    
    End Module


    • Editado miqui quilmes jueves, 6 de octubre de 2016 16:45
    • Marcado como respuesta JaviLin viernes, 7 de octubre de 2016 6:36
    jueves, 6 de octubre de 2016 16:43
  • Muchas gracias por responder miqui funiona de maravilla.

    El siguiente y último paso es poder acceder a los valores por separado de Groups(k) para insertarlos en una base de datos.

    He intentado el

    INSERT INTO destino [Casilla1[, Casilla2[, ...]])]
    VALUES (Groups(1), Groups(2), ...])

    pero no me funciona.

    Podrías echarme una mano?

    Muchas grácias!

    Javi

    viernes, 7 de octubre de 2016 6:36
  • Sería m.Groups(1).Value, ...
    viernes, 7 de octubre de 2016 12:05
  • Muchísimas gracias Miqui!

    funciona de fábula.

    Un saludo.

    Javi.

    martes, 11 de octubre de 2016 14:08