Differenze tra le versioni di "Scan"

Da Gambas-it.org - Wikipedia.
 
(25 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
La funzione '''Scan()''' restituisce un vettore di tipo ''Stringa'' contenente quelle parti della stringa (impostata nel primo parametro della funzione ''Scan()'' ), identificate e distinte fra loro in base ad uno o più caratteri contigui esistenti nella stringa medesima e che nel secondo parametro della fuzione ''Scan()'' sono collocati fra due metacaratteri <FONT Color=#B22222 size=4>*</font> .
+
La funzione '''Scan()''' restituisce un vettore di tipo ''Stringa'' contenente una o più parti della stringa (impostata nel primo parametro della funzione "Scan()" ) individuate e assimilate rispettivamente a uno o più metacaratteri <FONT Color=#B22222 size=4>*</font> .
 
+
<BR>Se si intende estrapolare una sola parte, essa può essere individuata e assimilata a un solo metacarattere "asterisco".
 
Se per esempio dalla stringa di caratteri iniziale:
 
Se per esempio dalla stringa di caratteri iniziale:
 
  Gambas è un potente ambiente per lo sviluppo di applicazioni
 
  Gambas è un potente ambiente per lo sviluppo di applicazioni
vogliamo estrarre soltanto le parole
+
vogliamo estrarre soltanto le parole:
  potente per lo sviluppo
+
  potente ambiente per lo sviluppo
facendo in modo - però - che la parola "potente" popoli il primo elemento del vettore, mentre le parole "per lo sviluppo" popolino il secondo elemento del vettore, potremo operare ''logicamente'' come segue.
+
basterà individuare e assimilare tale parte ad un asterisco, come segue:
Individuiamo esattamente la parola "potente" dai caratteri che la circondano
+
Public Sub Main()
  Gambas è un *
+
quindi individuiamo le parole "per lo sviluppo"
+
  Dim s As String = "Gambas è un potente ambiente per lo sviluppo di applicazioni"
  ambiente * di applicazioni
+
 
Quindi nel secondo parametro si inserirà la seguente stringa:
+
  s = Scan(s, "Gambas è un <FONT Color=#B22222 size=4>*</font> di applicazioni")[0]
 +
 
 +
  Print s
 +
 
 +
End
 +
Poiché la funzione "Scan()" restituisce un vettore di tipo stringa, ed essendo presente nel precedente esempio un solo asterisco, la parte estrapolata sarà contenuta nel primo elemento (indice 0) di detto vettore.
 +
 
 +
Qualora la parte di testo iniziale da non voler cosiderare sia molto lunga, la si può individuare e assimilare a un asterisco. Uguale ragionamento per la parte finale, se troppo lunga:
 +
Public Sub Main()
 +
 +
  Dim s As String
 +
 
 +
  s = File.Load("/proc/cpuinfo")
 +
 
 +
  s = Scan(s, "<FONT Color=red size=4>*</font>model name*:*stepping<FONT Color=red size=4>*</font>")[2]
 +
 
 +
  Print Trim(s)
 +
 +
End
 +
Se le parti da estrapolare sono due o numero superiore, esse sono identificate e distinte fra loro in base ad uno o più caratteri contigui a dette parti, non appartenenti ovviamente alle parti testuali da estrapolare, che nel secondo parametro della funzione "Scan()" sono collocati fra due o più metacaratteri <FONT Color=red size=4>*</font> .
 +
<BR>Così, ad esempio, se vogliamo popolare due (o più) diversi elementi del vettore di tipo stringa, restituito dalla funzione "Scan()", con due parti della stringa, ovviamente si dovranno considerare almeno due asterischi.
 +
<BR>Richiamando l'esempio iniziale, facciamo in modo che la parola "potente" popoli il primo elemento del vettore, mentre le parole "per lo sviluppo" popolino il secondo elemento del vettore, potremo operare ''logicamente'' come segue.
 +
<BR>Individuiamo esattamente la parola "potente" dai caratteri che la circondano: essa è delimitata dai precedenti caratteri "''Gambas è un'' " e dai seguenti caratteri " ''ambiente per lo sviluppo di applicazioni''" della stringa iniziale; pertanto avremo:
 +
  Gambas è un * ambiente per lo sviluppo di applicazioni
 +
quindi individuiamo le parole "per lo sviluppo": esse sono delimitate dai precedenti caratteri "''Gambas è un potente ambiente'' " e dai seguenti caratteri " ''di applicazioni''" della stringa iniziale; pertanto avremo:
 +
  Gambas è un potente ambiente * di applicazioni
 +
In conclusione nel secondo parametro si passerà alla funzione "Scan()" il seguente dato-stringa:
 
  "Gambas è un * ambiente * di applicazioni"
 
  "Gambas è un * ambiente * di applicazioni"
  
<BR>I metacaratteri <FONT Color=#B22222 size=4>*</font> rappresentano, dunque, le sole parti della stringa che popoleranno la variabile vettoriale di ritorno.
+
I metacaratteri <FONT Color=red size=4>*</font> rappresentano, dunque, le sole parti della stringa che popoleranno la variabile vettoriale di ritorno.
  
I caratteri che servono per identificare il punto di separazione fra una parte e l'altra della stringa, vanno collocati nella funzione ''Scan()'' comunque rispettando il loro ordine di posizione nella stringa medesima.  
+
I caratteri che servono a identificare il punto di separazione fra una parte e l'altra della stringa, vanno collocati nella funzione "Scan()" comunque rispettando il loro ordine di posizione nella stringa medesima.
  
 +
Si precisa che la composizione della stringa, da passare al secondo paramentro della funzione "Scan()", deve tenere in considerazione comunque l'intera stringa di caratteri passata al primo argomento attuale della funzione.
 +
<BR>Quindi, se la stringa è ad esempio:
 +
Gambas non è un clone di VB
 +
nel secondo parametro dovrò tenere conto dell'intera frase, e quindi ad esempio fare una cosa di questo genere:
 +
ss = Scan("Gambas non è un clone di VB", "*''un clone''*")
 +
Laddove il primo metacarattere dell'asterisco farà riferimento (ingloberà) alla parte "''Gambas non è'' " (ossia dal primo carattere della stringa) , e il secondo asterisco farà riferimento a "''di VB''" (ossia fino all'ultimo carattere della stringa).
  
Esempio:
+
Va fatto rilevare che le parti della stringa, presenti in modo esplicito (i caratteri "''un clone'' " del nostro esempio) nel secondo argomento, non vengono memorizzate nella variabile vettoriale restituita dalla funzione "Scan()".
'''Public''' Sub Main()
+
 
 +
 
 +
====Facciamo qualche esempio pratico====
 +
Public Sub Main()
 
   
 
   
   Dim s As String = "Questa<FONT Color=#B22222>|</font>è una<FONT Color=#B22222>, %</font>prova<FONT Color=#B22222>K/ </font>di Scan()"
+
   Dim s As String = "Questa<FONT Color=red>|</font>è una<FONT Color=red>, %</font>prova<FONT Color=red>K/ </font>di Scan()"
 
   Dim ss As String[]
 
   Dim ss As String[]
 
   
 
   
  <FONT Color=gray>' ''Ovviamente anche lo spazio è un carattere:''</font>
+
  <FONT Color=gray>' ''Ovviamente <U>anche lo spazio è un carattere</u>:''</font>
   ss = Scan(s, "*<FONT Color=#B22222>|</font>* *<FONT Color=#B22222>, %</font>*<FONT Color=#B22222>K/ </font>*")
+
   ss = Scan(s, "*<FONT Color=red>|</font>* *<FONT Color=red>, %</font>*<FONT Color=red>K/ </font>*")
 
   
 
   
 
   For Each s In ss
 
   For Each s In ss
Riga 31: Riga 66:
 
   Next
 
   Next
 
   
 
   
  '''End'''
+
  End
  
  
 
In quest'altro esempio i caratteri separatori saranno soltanto i 5 spazi:
 
In quest'altro esempio i caratteri separatori saranno soltanto i 5 spazi:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim s As String = "Questa è una prova di Scan()"
 
   Dim s As String = "Questa è una prova di Scan()"
 
   Dim ss As String[]
 
   Dim ss As String[]
 
   
 
   
  <FONT Color=gray>' ''Ovviamente anche lo spazio è un carattere.''
+
  <FONT Color=gray>' ''Ovviamente <U>anche lo spazio è un carattere</u>.''
  ' ''Qui 6 * individuano 5 spazi:''</font>
+
  ' ''Qui 6 * individuano 5 spazi (sono quelli visibili fra gli asterischi):''</font>
 
   ss = Scan(s, "* * * * * *")
 
   ss = Scan(s, "* * * * * *")
 
   
 
   
 
  <FONT Color=gray>' ''Oppure anche così:''
 
  <FONT Color=gray>' ''Oppure anche così:''
  '  ss = Scan(s, RTrim(String$(6, "* ")))</font>
+
  '  '''ss = Scan(s, RTrim(String(6, "* ")))'''</font>
 
   
 
   
 
   For Each s In ss
 
   For Each s In ss
Riga 51: Riga 86:
 
   Next
 
   Next
 
   
 
   
  '''End'''
+
  End
 +
Altro esempio in cui si farà uso della funzione nativa "String()" per impostare più metacaratteri asterisco (*) nella funzione "Scan()", avendo una stringa con una struttura formale interna sostanzialmente costante, uniforme:
 +
Public Sub Main()
 +
 +
  Dim t As String = "06.08.24|Einkauf|12,09\n"
 +
                    "07.08.24|Einkauf| 5,00\n"
 +
                    "08.08.24|Einkauf|23,56\n"
 +
  Dim c As Single
 +
 +
  For n As Byte = 2 To 8 Step 3
 +
    c += Val(Scan(t, <FONT Color=red>String(3, "*|*|*\n")</font>)[n])
 +
  Next
 +
 +
  Print c
 +
 +
End
  
  
 
In quest'altro esempio il carattere separatore è il punto presente in un numero in virgola mobile. Si potrà in questo modo estrarre sia la parte intera che la parte decimale essenziale di quel numero:
 
In quest'altro esempio il carattere separatore è il punto presente in un numero in virgola mobile. Si potrà in questo modo estrarre sia la parte intera che la parte decimale essenziale di quel numero:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Print Scan(CStr(5 / 3), "*.*")[1]
 
   Print Scan(CStr(5 / 3), "*.*")[1]
 
   
 
   
  '''End'''
+
  End
 
 
  
  
La funzione ''Scan()'' risulta molto utile nel caso in cui, avendo una stringa formata da gruppi di valori significativi divisi da specifiche parole identificative di ciascun gruppo di valori, si intenda raccogliere, distinti per ciascun campo del vettore restituito da detta funzione, quei valori significativi.
+
La funzione "Scan()" risulta molto utile nel caso in cui, avendo una stringa formata da gruppi di valori significativi divisi da specifiche parole identificative di ciascun gruppo di valori, si intenda raccogliere, distinti per ciascun campo del vettore restituito da detta funzione, quei valori significativi.
  
Mostriamo un esempio, nel quale i gruppi di valori significativi da raccogliere sono: ''1234'', ''5678'', ''ABCD'', ''EFGH'', distinti fra loro e rappresentati dalle parole identificative: ''uno'', ''due'', ''tre'' e ''quattro''.
+
Mostriamo un esempio, nel quale i gruppi di valori significativi da raccogliere sono: ''1234'', ''5678'', ''ABCD'', ''EFGH'', distinti fra loro dalle parole: ''uno'', ''due'', ''tre'' e ''quattro''.
<BR>Basandoci, dunque su tali parole identificative di ciascun gruppo, raccoglieremo mediante la funzione ''Scan()'' i valori siginificativi rappresentati:
+
<BR>Basandoci, dunque su tali parole identificative di ciascun gruppo, raccoglieremo mediante la funzione "Scan()" i valori siginificativi rappresentati:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim s As String = "uno1234due5678treABCDquattroEFGH"
 
   Dim s As String = "uno1234due5678treABCDquattroEFGH"
 
   Dim ss As String[]
 
   Dim ss As String[]
 +
 +
  ss = Scan(s, "uno*due*tre*quattro*")
 +
 
 +
  For Each s In ss
 +
    Print s
 +
  Next
 +
 +
End
 +
 +
La funzione "Scan()", insomma, può per certi versi essere equiparata un po' alla funzione "Split()", con la differenza che nella funzione "Scan()" è possibile utilizzare più valori separatori, purché impostati correttamente nella sequenza dei caratteri e delle parole presenti nella stringa da trattare.
 +
 +
 +
====Caso in cui si debbano estrarre sottostringhe delimitate da parentesi quadre [ ]====
 +
Qualora si debbano estrarre sottostringhe delimitate da parentesi quadre [ ], si ripeteranno dopo la prima parentesi quadra - aperta a destra ([) - entrambe le parentesi quadre.
 +
 +
Mostriamo un esempio pratico, nel quale abbiamo una stringa di caratteri interrotta da una parentesi quadra aperta a destra e dopo alcuni caratteri è interrotta da una parentesi quadra aperta a sinistra. Vogliamo estrarre in particolare la sottostringa compresa fra le due parentesi quadre.
 +
Public Sub Main()
 +
 
 +
  Dim testo As String = "aaa[bbb]ccc"
 +
  Dim s As String
 
      
 
      
  ss = Scan(s, "uno*due*tre*quattro*")
+
  s = Scan(testo, "*[<FONT Color=red><B>[]</b></font>*]*")[1]
 +
 +
  Print s
 
    
 
    
   For Each s In ss
+
End
    Print s
+
 
   Next
+
====Caso in cui si debbano estrarre sottostringhe delimitate da un asterisco * o un carattere ''escape''====
 +
Qualora si debbano estrarre sottostringhe delimitate da un asterisco <FONT Size=4>*</font>, si porrà il simbolo dell'asterisco all'interno di due parentesi quadre.
 +
 
 +
Nell'esempio seguente, avendo una stringa di caratteri contenente all'interno un asterisco, vogliamo estrarre la sottostringa successiva all'asterisco.
 +
Public Sub Main()
 +
 
 +
  Dim testo As String = "aaa*bbbccc"
 +
  Dim s As String
 +
   
 +
  s = Scan(testo, "*<FONT Color=red><B>[</b></font><FONT Color=blue>*</font><FONT Color=red><B>]</b></font>*")[1]
 +
 
 +
  Print s
 +
    
 +
End
 +
egualmente se c'è un carattere ''escape'':
 +
Public Sub Main()
 +
 +
  Dim testo As String = "aaa\nbbbccc"
 +
  Dim s As String
 +
   
 +
  s = Scan(testo, "*<FONT Color=red><B>[</b></font><FONT Color=blue>\n</font><FONT Color=red><B>]</b></font>*")[1]
 +
 +
  Print s
 +
    
 +
End
 +
altro esempio:
 +
Public Sub Main()
 +
 +
  Dim s As String
 +
 +
  s = "aaaa \r bbbb"
 +
 
 +
  s = Scan(s, "*[\r]*")[1]
 +
 +
  Print s
 +
 +
End
 +
altro esempio:
 +
Public Sub Main()
 +
 +
  Dim s As String
 +
 +
  s = "\r bbbb aaaa"
 +
 +
  s = Scan(s, "[\r] * *")[1]
 +
 +
  Print s
 
   
 
   
  '''End'''
+
  End
 
+
ad esempio il carattere ''escape'' con le virgolette:
La funzione ''Scan()'', insomma, può per certi versi essere equiparata un po' alla funzione ''Split()'', con la differenza che nella funzione ''Scan()'' è possibile utilizzare più valori separatori, purché impostati correttamente nella sequenza dei caratteri e delle parole presenti nella stringa da trattare.
+
Public Sub Main()
 +
 
 +
  Dim testo As String = "aaa\"bbb\"ccc"
 +
  Dim s As String
 +
   
 +
  s = Scan(testo, "*<FONT Color=red><B>[</b></font><FONT Color=blue>\"</font><FONT Color=red><B>]</b></font>*<FONT Color=red><B>[</b></font><FONT Color=blue>\"</font><FONT Color=red><B>]</b></font>*")[1]
 +
 
 +
  Print s
 +
 
 +
End

Versione attuale delle 10:16, 8 ago 2024

La funzione Scan() restituisce un vettore di tipo Stringa contenente una o più parti della stringa (impostata nel primo parametro della funzione "Scan()" ) individuate e assimilate rispettivamente a uno o più metacaratteri * .
Se si intende estrapolare una sola parte, essa può essere individuata e assimilata a un solo metacarattere "asterisco". Se per esempio dalla stringa di caratteri iniziale:

Gambas è un potente ambiente per lo sviluppo di applicazioni

vogliamo estrarre soltanto le parole:

potente ambiente per lo sviluppo

basterà individuare e assimilare tale parte ad un asterisco, come segue:

Public Sub Main()

 Dim s As String = "Gambas è un potente ambiente per lo sviluppo di applicazioni"
 
 s = Scan(s, "Gambas è un * di applicazioni")[0]
 
 Print s
 
End

Poiché la funzione "Scan()" restituisce un vettore di tipo stringa, ed essendo presente nel precedente esempio un solo asterisco, la parte estrapolata sarà contenuta nel primo elemento (indice 0) di detto vettore.

Qualora la parte di testo iniziale da non voler cosiderare sia molto lunga, la si può individuare e assimilare a un asterisco. Uguale ragionamento per la parte finale, se troppo lunga:

Public Sub Main()

 Dim s As String
 
 s = File.Load("/proc/cpuinfo")
 
 s = Scan(s, "*model name*:*stepping*")[2]
 
 Print Trim(s)

End

Se le parti da estrapolare sono due o numero superiore, esse sono identificate e distinte fra loro in base ad uno o più caratteri contigui a dette parti, non appartenenti ovviamente alle parti testuali da estrapolare, che nel secondo parametro della funzione "Scan()" sono collocati fra due o più metacaratteri * .
Così, ad esempio, se vogliamo popolare due (o più) diversi elementi del vettore di tipo stringa, restituito dalla funzione "Scan()", con due parti della stringa, ovviamente si dovranno considerare almeno due asterischi.
Richiamando l'esempio iniziale, facciamo in modo che la parola "potente" popoli il primo elemento del vettore, mentre le parole "per lo sviluppo" popolino il secondo elemento del vettore, potremo operare logicamente come segue.
Individuiamo esattamente la parola "potente" dai caratteri che la circondano: essa è delimitata dai precedenti caratteri "Gambas è un " e dai seguenti caratteri " ambiente per lo sviluppo di applicazioni" della stringa iniziale; pertanto avremo:

Gambas è un * ambiente per lo sviluppo di applicazioni

quindi individuiamo le parole "per lo sviluppo": esse sono delimitate dai precedenti caratteri "Gambas è un potente ambiente " e dai seguenti caratteri " di applicazioni" della stringa iniziale; pertanto avremo:

Gambas è un potente ambiente * di applicazioni

In conclusione nel secondo parametro si passerà alla funzione "Scan()" il seguente dato-stringa:

"Gambas è un * ambiente * di applicazioni"

I metacaratteri * rappresentano, dunque, le sole parti della stringa che popoleranno la variabile vettoriale di ritorno.

I caratteri che servono a identificare il punto di separazione fra una parte e l'altra della stringa, vanno collocati nella funzione "Scan()" comunque rispettando il loro ordine di posizione nella stringa medesima.

Si precisa che la composizione della stringa, da passare al secondo paramentro della funzione "Scan()", deve tenere in considerazione comunque l'intera stringa di caratteri passata al primo argomento attuale della funzione.
Quindi, se la stringa è ad esempio:

Gambas non è un clone di VB

nel secondo parametro dovrò tenere conto dell'intera frase, e quindi ad esempio fare una cosa di questo genere:

ss = Scan("Gambas non è un clone di VB", "*un clone*")

Laddove il primo metacarattere dell'asterisco farà riferimento (ingloberà) alla parte "Gambas non è " (ossia dal primo carattere della stringa) , e il secondo asterisco farà riferimento a "di VB" (ossia fino all'ultimo carattere della stringa).

Va fatto rilevare che le parti della stringa, presenti in modo esplicito (i caratteri "un clone " del nostro esempio) nel secondo argomento, non vengono memorizzate nella variabile vettoriale restituita dalla funzione "Scan()".


Facciamo qualche esempio pratico

Public Sub Main()

 Dim s As String = "Questa|è una, %provaK/ di Scan()"
 Dim ss As String[]

' Ovviamente anche lo spazio è un carattere:
  ss = Scan(s, "*|* *, %*K/ *")

  For Each s In ss
    Print s
  Next

End


In quest'altro esempio i caratteri separatori saranno soltanto i 5 spazi:

Public Sub Main()

 Dim s As String = "Questa è una prova di Scan()"
 Dim ss As String[]

' Ovviamente anche lo spazio è un carattere.
' Qui 6 * individuano 5 spazi (sono quelli visibili fra gli asterischi):
  ss = Scan(s, "* * * * * *")

' Oppure anche così:
'  ss = Scan(s, RTrim(String(6, "* ")))

  For Each s In ss
    Print s
  Next

End

Altro esempio in cui si farà uso della funzione nativa "String()" per impostare più metacaratteri asterisco (*) nella funzione "Scan()", avendo una stringa con una struttura formale interna sostanzialmente costante, uniforme:

Public Sub Main()

 Dim t As String = "06.08.24|Einkauf|12,09\n"
                   "07.08.24|Einkauf| 5,00\n"
                   "08.08.24|Einkauf|23,56\n"
 Dim c As Single

 For n As Byte = 2 To 8 Step 3
   c += Val(Scan(t, String(3, "*|*|*\n"))[n])
 Next

 Print c

End


In quest'altro esempio il carattere separatore è il punto presente in un numero in virgola mobile. Si potrà in questo modo estrarre sia la parte intera che la parte decimale essenziale di quel numero:

Public Sub Main()

  Print Scan(CStr(5 / 3), "*.*")[1]

End


La funzione "Scan()" risulta molto utile nel caso in cui, avendo una stringa formata da gruppi di valori significativi divisi da specifiche parole identificative di ciascun gruppo di valori, si intenda raccogliere, distinti per ciascun campo del vettore restituito da detta funzione, quei valori significativi.

Mostriamo un esempio, nel quale i gruppi di valori significativi da raccogliere sono: 1234, 5678, ABCD, EFGH, distinti fra loro dalle parole: uno, due, tre e quattro.
Basandoci, dunque su tali parole identificative di ciascun gruppo, raccoglieremo mediante la funzione "Scan()" i valori siginificativi rappresentati:

Public Sub Main()

 Dim s As String = "uno1234due5678treABCDquattroEFGH"
 Dim ss As String[]

 ss = Scan(s, "uno*due*tre*quattro*")
 
 For Each s In ss
   Print s
 Next

End

La funzione "Scan()", insomma, può per certi versi essere equiparata un po' alla funzione "Split()", con la differenza che nella funzione "Scan()" è possibile utilizzare più valori separatori, purché impostati correttamente nella sequenza dei caratteri e delle parole presenti nella stringa da trattare.


Caso in cui si debbano estrarre sottostringhe delimitate da parentesi quadre [ ]

Qualora si debbano estrarre sottostringhe delimitate da parentesi quadre [ ], si ripeteranno dopo la prima parentesi quadra - aperta a destra ([) - entrambe le parentesi quadre.

Mostriamo un esempio pratico, nel quale abbiamo una stringa di caratteri interrotta da una parentesi quadra aperta a destra e dopo alcuni caratteri è interrotta da una parentesi quadra aperta a sinistra. Vogliamo estrarre in particolare la sottostringa compresa fra le due parentesi quadre.

Public Sub Main()
 
 Dim testo As String = "aaa[bbb]ccc"
 Dim s As String
   
 s = Scan(testo, "*[[]*]*")[1]

 Print s
  
End

Caso in cui si debbano estrarre sottostringhe delimitate da un asterisco * o un carattere escape

Qualora si debbano estrarre sottostringhe delimitate da un asterisco *, si porrà il simbolo dell'asterisco all'interno di due parentesi quadre.

Nell'esempio seguente, avendo una stringa di caratteri contenente all'interno un asterisco, vogliamo estrarre la sottostringa successiva all'asterisco.

Public Sub Main()
 
 Dim testo As String = "aaa*bbbccc"
 Dim s As String
   
 s = Scan(testo, "*[*]*")[1]
  
 Print s
  
End

egualmente se c'è un carattere escape:

Public Sub Main()

 Dim testo As String = "aaa\nbbbccc"
 Dim s As String
   
 s = Scan(testo, "*[\n]*")[1]

 Print s
  
End

altro esempio:

Public Sub Main()

 Dim s As String

 s = "aaaa \r bbbb"
 
 s = Scan(s, "*[\r]*")[1]

 Print s

End

altro esempio:

Public Sub Main()

 Dim s As String

 s = "\r bbbb aaaa"

 s = Scan(s, "[\r] * *")[1]

 Print s

End

ad esempio il carattere escape con le virgolette:

Public Sub Main()
 
 Dim testo As String = "aaa\"bbb\"ccc"
 Dim s As String
   
 s = Scan(testo, "*[\"]*[\"]*")[1]
  
 Print s
  
End