Cercare una parola in una stringa
Per cercare una parola in una stringa potranno essere usate diverse soluzioni.
Con la funzione InStr
Probabilmente questa è la soluzione più breve. Con InStr, se viene trovata la parola, verrà restituito un valore di tipo integer superiore a zero, che rappresenta la posizione del primo carattere della parola cercata (o della prima parola trovata fra due o più 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" If InStr($prova, "tenda") > 0 then Print "La parola \"tenda\" è presente nella stringa !" Endif End
Infatti, se vedessimo il risultato restituito in questo esempio da Instr, avremmo: 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. Se, dunque il valore, restituito da RInStr è superiore a zero, significa che la parola è presente:
Public Sub Button1_Click()
Dim $prova As String = "la tenda rossa era grande come la tenda verde"
If RInStr($prova, "tenda") > 0 then
Print "La parola \"tenda\" è presente nella stringa !"
Endif
End
Infatti, se vedessimo il risultato restituito in questo esempio da RInStr, avremmo: 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 .
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 Replace
Potremo utilizzare anche la funzione Replace. L'intento è quello di tentare di eliminare all'interno della stringa la parola che si intende cercare, e che sarà posta nel secondo parametro richiesto: quello della stringa da sostituire. Quindi si fanno conforntare le due stringhe; se la stringa risultante dopo l'intervento di Replace è divesa dalla stringa originaria, vuol dire che la parola cercata è stata modificata, quindi è stata trovata; se è uguale, la parola non è stata trovata, poiché la stringa non risulta - appunto - modificata:
Public Sub Button1_Click()
Dim $prova As String = "sale e pepe"
If Replace($prova, "pepe", "") < $prova then
"La parola è stata trovata nella stringa !"
Endif
End