Cercare una parola in una stringa
Per cercare una parola in una stringa potranno essere usate diverse soluzioni.
Indice
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'obiettivo è cercare di eliminare all'interno della stringa la parola che si intende trovare, 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
Con il metodo .Exist di un vettore
Si potrà utilizzare anche il metodo .Exist() di un vettore di tipo Stringa. Tale metodo ritorna il valore booleano "Vero", se la parola verificata esiste nella stringa: Public Sub Main()
Dim s As String s = "Questa è una prova" If Split(w, Chr(32)).Exist("una") Then Print "La parola \"una\" è presente nella stringa !" End