Cercare una parola in una stringa

Da Gambas-it.org - Wikipedia.

Per cercare una parola in una stringa potranno essere usate diverse soluzioni.


Con LIKE ed il metacarattere *

In questo caso possiamo sapere semplicemente se la parola cercata esiste nella stringa: 1)

Public Sub Button1_Click()

Dim $prova As String = "la tenda è grande"

' In vero qui si vuole sapere se la frase, contenuta nella variabile $prova,
' possiede la parola "tenda" affiancata da due spazi:
  If $prova Like "* tenda *" Then
    Print "Parola trovata !"
  Endif

End

2) Possiamo anche cercare la parola partendo da uno o più caratteri:

Public Sub Button1_Click()

 Dim $prova As String = "sale e pepe"

' In questo secondo caso verifichiamo
' se la frase possiede la parola contenente la lettera "p":
  If $prova Like "*p*" Then
    Print "Esiste una parola che contiene la lettera \"p|"."
  Endif

End

3) In quest'altro esempio individueremo e mostreremo anche la parola che contiene il carattere:

Public Sub Button1_Click()

 Dim s As String
 Dim ss As String[]
 Dim j As Byte

  s = "pane e pere"

  ss = Split(s, " ", "", True)

  For j = 0 To ss.Max
' Individua la parola contenuta nell'array e la mostra:
    If ss[j] Like "*r*" Then Print ss[j]
  Next

End

Più in generale riguardo all'operatore Like con il metacarattere * ricordiamo che:

a* indica qualunque stringa (parola) abbia come primo carattere "a";
*b indica qualunque stringa (parola) abbia come ultimo carattere "b";
*c* indica qualunque stringa (parola) abbia in qualsiasi posizione un carattere "c";


Con la funzione INSTR

In questo caso verrà restituita la posizione del primo carattere della prima parola trovata fra due o più eventuali, identiche a quella cercata, all'interno della stringa :

Public Sub Button1_Click()

Dim $prova As String = "la tenda rossa era grande come la tenda verde"
Dim pos As Byte


pos = InStr($prova, "tenda")

 Print pos

End

Il risultato in console sarà:
4


Con la funzione RINSTR

In questo caso verrà restituita la posizione del primo carattere dell'ultima parola trovata fra due o più eventuali, identiche a quella cercata, all'interno della stringa :

Public Sub Button1_Click()

Dim $prova As String = "la tenda rossa era grande come la tenda verde"
Dim pos As Byte


pos = RInStr($prova, "tenda")

 Print pos

End

Il risultato in console sarà:
35


Le funzioni InStr e RInStr e caratteri particolari

Per le stringhe in utf bisogna usare la classe String, altrimenti i caratteri particolari come: è, é, ò, à, ù, etc riporteranno un conteggio pari a 2 e non a 1. In particolare vedere le note nelle pagine:a InStr e RInStr .