Differenze tra le versioni di "Scomporre una stringa e caricare ogni parola in una variabile array"
Riga 65: | Riga 65: | ||
'''Public''' Sub Button1_Click() | '''Public''' Sub Button1_Click() | ||
− | Dim | + | Dim fl As File |
Dim s$ As String | Dim s$ As String | ||
Dim ss$ As New String[] | Dim ss$ As New String[] |
Versione delle 16:44, 2 set 2012
Il caso in questione è quello in cui si ha una stringa, nella quale sono presenti anche dei comandi: carrello a capo + nuova riga, così da ottenere visivamente più righe, come nell'esempio sottostante:
Questo è il Wiki di Gambas-it cioè è una collezione di documenti ipertestuali che può essere modificata dai suoi utilizzatori
L'intenzione è quello di scomporre tale stringa in modo da distinguere ed inserire i vari gruppi di caratteri alfanumerici comprensibli (ossia le normali parole) e diversi dagli spazi, che formano la stringa, in una variabile array.
Indice
Se la stringa è posta in una variabile
Poniamo il caso che quella stringa sia caricata tutta nella variabile stringa "wiki".
Per raggiungere il nostro obiettivo iniziale potremo, quindi, adottare il seguente procedimento:
Private wiki As String = "Questo è il Wiki di Gambas-it\n" & "cioè è una collezione di documenti ipertestuali\n" & "che può essere modificata dai suoi utilizzatori" Public Sub Button1_Click() Dim a As String Dim aa As String[] Dim j As Byte ' Eliminiamo innanzitutto dalla stringa tutti i comandi: ' "carrello a capo + nuova riga", trasformandoli in semplici spazi. ' La stringa si trasformerà visivamente in un'unica riga lineare. Questo per preparare ' la stringa alla successiva funzione ed affinché essa resti unica: a = Replace(wiki, "\n", " ") ' Si scompone, quindi, la stringa così ottenuta, ponendo come punto ' di divisione di ogni elemento dall'altro gli spazi. Si pone a "True" l'ultimo parametro ' della funzione "Split", in modo tale da assicurarsi completamente la non considerazione di qualsisi spazio. ' Nella variabile array "aa" avremo, quindi, una parola alfanumerica per ciascun elemento: aa = Split(a, " ", "", True) ' Andiamo a vedere il contenuto di ciascun elemento dell'array: for j = 0 to aa.Max Print aa[j] Next End
Se la stringa viene letta da un file di testo
In tal caso possiamo adottare due modalità:
Lettura con il metodo File.Load
Il file di testo viene letto con il metodo .Load della classe File; ed i dati risultanti saranno posti in una variabile di tipo stringa:
Public Sub Button1_Click() Dim a As String a = File.Load("percorso_del_file_di_testo") ' Qui, poi, le funzioni "Split" e "Replace"...... End
Si procederà poi a distinguere le varie parole della stringa, caricata nella variabile, mediante le due funzioni "Split" e "Replace" sostanzialmente con le medesime modalità viste prima.
Lettura con Open....For Read/Input
Con quest'altra modalità si leggerà il file di testo come un file binario mediante la fuzione Input. Come è noto, "Input" legge le stringhe in un File di testo fino all'interruzione dello spazio o al carattere di "nuova linea". Ciò permetterà di individuare ogni parola del testo, delimitata da uno spazio, e di caricarla successivamente in un nuovo elemento di un'apposita variabile-array:
Public Sub Button1_Click() Dim fl As File Dim s$ As String Dim ss$ As New String[] Dim j As Byte f = Open "percorso_del_file_di_testo" For Read ' ...oppure "Input" While Not Eof(fl) Input #fl, s$ ' Ogni parola del testo, delimitata da uno spazio, viene individuata ' e caricata in un nuovo elemento della variabile-array ss$: ss$.Add(s$) Wend ' Mostra in console ogni stringa (parola) contenuta in ciascun elemento della variabile-array ss$: For j = 0 To b.Max Print ss$[j] Next End