Differenze tra le versioni di "Scomporre una stringa e caricare ogni parola in una variabile array"

Da Gambas-it.org - Wikipedia.
Riga 55: Riga 55:
 
   a = File.Load("percorso_del_file_di_testo")
 
   a = File.Load("percorso_del_file_di_testo")
 
   
 
   
  <FONT color=#006400>' ''Qui, poi, le funzioni "Split" e "Replace"''</font>
+
  <FONT color=#006400>' ''Qui, poi, le funzioni "Split" e "Replace"......''</font>
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione delle 09:57, 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.


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 f 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