Metodi di Parsing, CSV Files
Il parsing, analisi sintattica o parsificazione, in informatica è un processo che analizza un flusso continuo di dati in input (letti per esempio da un file o una tastiera) in modo da determinare la sua struttura grazie ad una data grammatica formale.
Il parser è un programma che esegue questo compito, cioè determina se e come un input può derivare dal simbolo iniziale con le regole della grammatica formale.
Esistono due principali metodi di parsing:
- Metodo top-down, un parser può partire con il simbolo iniziale e cercare di trasformarlo nell'input. Intuitivamente, il parser parte dal più grande elemento e lo divide in parti sempre più piccole;
- Metodo bottom-up, un parser può partire con l'input e cercare di riscriverlo sino al simbolo iniziale. Intuitivamente, il parser cerca di trovare il più elementare simbolo, quindi elabora gli elementi che lo contengono, e così via.
Nello specifico, ci soffermiamo sulla lettura di un file .csv (comma-separeted values) e la sua trasposizione in una RichTextBox in VB.NET e C#, andando a trattare di seguito un esempio illustrativo in VB.NET e nell'articolo successivo i diversi metodi utilizzabili nei due linguaggi di programmazione.
Dopo aver creato il Form e aver inserito un Button (Button1) e una RichTextBox (RichTextBox1):
Import System.IO
Public Class Form 1
Vado a definire cosa controlla il Button1
Sub Button1_Click(Sender As Object, e As EventArgs) Handles Button1.Click
Acquisizione del nome del file
Dim o As New OpenFileDialog
o.ShowDialog()
Dim NomeFile As String = o.FileName
Acquisizione alternativa del nome del file
Dim NomeFile As String = " percorso file "
Definizione del lettore: utilizzo la funzione StreamReader
Dim s As New StreamReader(NomeFile)
Definisco un Loop fino alla lettura dell'ultima riga
Do
Dim RigaDelFile = s.ReadLine()
Non considero le righe di commento o le righe vuote
If RigaDelFile.Contains("#") Then Continue Do
If RigaDelFile.Contains(" ") Then Continue Do
Dim Pezzi As String() = RigaDelFile.Split(" ".ToCharArray, StringSplitOptions.RemoveEmptyEntries)
Trasferisco il tutto alla RichTextBox1
Me.RichTextBox1.AppendText(RigaDelFile & Environment.NewLine)
Loop Untile s.EndOfStream
End Sub
End Class
Commenti
Posta un commento