Raccogliere solo alcune righe all'interno di un file di testo

Da Gambas-it.org - Wikipedia.

Mostreremo di seguito un possibile algoritmo per raccogliere da un file di testo solo alcune righe, individuando la prima riga da raccogliere non da un numero d'indice (ad esempio: la 20a riga), bensì dal proprio testo.

Uso dell'operatore "Like"

In questo caso utilizzeremo l'operatore "Like" per filtrare le righe da raccogliere.

Come esempio prederemo dal file header /usr/include/alsa/mixer.h soltanto le righe che contengono almeno i caratteri "_class ". Per ottenere questo risultato si userà anche l'operatore asterisco: "*_class*".

Public Sub Main()

 Dim fl As File
 Dim s As String

 fl = Open "/usr/include/alsa/mixer.h" For Read

 Repeat 
' Legge ogni riga del file di testo:
   s = fl.ReadLine()
' Raccoglie solo le righe che contengono almeno i caratteri "_class":
   If s Like "*_class*" Then Print s
' Quando si raggiunge la fine del file di testo, si esce dal ciclo:
 Until fl.EndOfFile

 fl.Close

End

Uso dell'operatore "Begins"

In questo caso utilizzeremo l'operatore "Begins" per filtrare le righe da raccogliere.

Come esempio prederemo dal file header /usr/include/alsa/mixer.h soltanto le righe che iniziano con i caratteri "typedef ":

Public Sub Main()

 Dim fl As File
 Dim s As String

 fl = Open "/usr/include/alsa/mixer.h" For Read

 Repeat 
' Legge ogni riga del file di testo:
   s = fl.ReadLine()
' Raccoglie solo le righe che cominciano con "typedef":
   If s Begins "typedef" Then Print s
' Quando si raggiunge la fine del file di testo, si esce dal ciclo:
 Until fl.EndOfFile

 fl.Close

End

Uso dell'operatore "Ends"

In questo caso utilizzeremo l'operatore "Ends" per filtrare le righe da raccogliere.

Come esempio prederemo dal file header /usr/include/alsa/mixer.h soltanto le righe che terminano con i caratteri "value); ":

Public Sub Main()

 Dim fl As File
 Dim s As String

 fl = Open "/usr/include/alsa/mixer.h" For Read

 Repeat 
' Legge ogni riga del file di testo:
   s = fl.ReadLine()
' Raccoglie solo le righe che terminano con "value);":
   If s Ends "value);" Then Print s
' Quando si raggiunge la fine del file di testo, si esce dal ciclo:
 Until fl.EndOfFile

 fl.Close

End