Differenze tra le versioni di "Cercare una parola in una stringa"

Da Gambas-it.org - Wikipedia.
Riga 2: Riga 2:
  
  
===Con '''LIKE''' ed il metacarattere '''*'''===
+
==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'<SPAN style="text-decoration:underline">ultima</span> 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|InStr]] e [[RInStr|RInStr]] .
 +
 
 +
 
 +
 
 +
==Con '''LIKE''' ed il metacarattere '''*'''==
 
In questo caso possiamo sapere semplicemente se la parola cercata esiste nella stringa:
 
In questo caso possiamo sapere semplicemente se la parola cercata esiste nella stringa:
 +
 
1)
 
1)
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
Riga 50: Riga 92:
 
  '''End'''
 
  '''End'''
  
Più in generale riguardo all'operatore ''Like'' con il metacarattere '''*''' ricordiamo che:
+
Più in generale riguardo all'operatore ''Like'' con il metacarattere <FONT color=#B22222>'''*'''</font> ricordiamo che:
 
  a* indica qualunque stringa (parola) abbia come <SPAN style="text-decoration:underline">primo</span> carattere "a";
 
  a* indica qualunque stringa (parola) abbia come <SPAN style="text-decoration:underline">primo</span> carattere "a";
 
  *b indica qualunque stringa (parola) abbia come <SPAN style="text-decoration:underline">ultimo</span> carattere "b";
 
  *b indica qualunque stringa (parola) abbia come <SPAN style="text-decoration:underline">ultimo</span> carattere "b";
  *c* indica qualunque stringa (parola) abbia <SPAN style="text-decoration:underline">in qualsiasi posizione</span> un carattere "c";
+
  *c* indica qualunque stringa (parola) abbia <SPAN style="text-decoration:underline">in qualsiasi posizione</span> 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à:
 
<BR>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à:
 
<BR>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|InStr]] e [[RInStr|RInStr]] .
 

Versione delle 09:29, 15 gen 2013

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".