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

Da Gambas-it.org - Wikipedia.
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
Riga 2: Riga 2:
  
  
==Con la funzione '''InStr'''==
+
==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 :
+
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()
+
  Public Sub Button1_Click()
 
   
 
   
Dim $prova As String = "la tenda rossa era grande come la tenda verde"
+
  Dim $prova As String = "la tenda rossa era grande come la tenda verde"
 
   
 
   
  If InStr($prova, "tenda") > 0 then
+
  If InStr($prova, "tenda") > 0 then
 +
    Print "La parola \"tenda\" è presente nella stringa !"
 +
  Endif
 
   
 
   
    Print "La parola \"tenda\" è presente nella stringa !"
+
  End
 
 
  Endif
 
 
'''End'''
 
 
 
 
Infatti, se vedessimo il risultato restituito in questo esempio da ''Instr'', avremmo: 4
 
Infatti, se vedessimo il risultato restituito in questo esempio da ''Instr'', avremmo: 4
  
  
 
+
==Con la funzione '''RInStr()'''==
==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:
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()
  '''Public''' Sub Button1_Click()
 
 
   
 
   
  Dim $prova As String = "la tenda rossa era grande come la tenda verde"
+
  Dim $prova As String = "la tenda rossa era grande come la tenda verde"
 
   
 
   
    If RInStr($prova, "tenda") > 0 then
+
  If RInStr($prova, "tenda") > 0 then
+
    Print "La parola \"tenda\" è presente nella stringa !"
      Print "La parola \"tenda\" è presente nella stringa !"
+
  Endif
 
    Endif
 
 
   
 
   
  '''End'''
+
  End
 
 
 
Infatti, se vedessimo il risultato restituito in questo esempio da ''RInStr'', avremmo: 35
 
Infatti, se vedessimo il risultato restituito in questo esempio da ''RInStr'', avremmo: 35
  
  
 
+
==Le funzioni "InStr()" e "RInStr()" e caratteri particolari==
==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]] .
 
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]] .
 
  
  
Riga 46: Riga 37:
 
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()
 
   
 
   
Dim $prova As String = "la tenda è grande"
+
  Dim $prova As String = "la tenda è grande"
 
   
 
   
  <FONT color=006400>' ''In vero qui si vuole sapere se la frase, contenuta nella variabile $prova,''
+
  <FONT color=gray>' ''In vero qui si vuole sapere se la frase, contenuta nella variabile $prova, possiede la parola "tenda" affiancata da due spazi:''</font>
' ''possiede la parola "tenda" affiancata da due spazi:''</font>
 
 
   If $prova Like "* tenda *" Then
 
   If $prova Like "* tenda *" Then
 
     Print "Parola trovata !"
 
     Print "Parola trovata !"
 
   Endif
 
   Endif
 
   
 
   
  '''End'''
+
  End
  
2)
+
'''2''')
 
Possiamo anche cercare la parola partendo da uno o più caratteri:
 
Possiamo anche cercare la parola partendo da uno o più caratteri:
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
   
 
   
  Dim $prova As String = "sale e pepe"
+
  Dim $prova As String = "sale e pepe"
 
   
 
   
  <FONT color=006400>' ''In questo secondo caso verifichiamo
+
  <FONT color=gray>' ''In questo secondo caso verifichiamo se la frase possiede la parola contenente la lettera "p":''</font>
' ''se la frase possiede la parola contenente la lettera "p":''</font>
 
 
   If $prova Like "*p*" Then
 
   If $prova Like "*p*" Then
 
     Print "Esiste una parola che contiene la lettera \"p|"."
 
     Print "Esiste una parola che contiene la lettera \"p|"."
 
   Endif
 
   Endif
 
   
 
   
  '''End'''
+
  End
  
3)
+
'''3''')
 
In quest'altro esempio individueremo e mostreremo anche la parola che contiene il carattere:
 
In quest'altro esempio individueremo e mostreremo anche la parola che contiene il carattere:
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
   
 
   
  Dim s As String
+
  Dim s As String
  Dim ss As String[]
+
  Dim ss As String[]
  Dim j As Byte
+
  Dim b As Byte
 
   
 
   
 
   s = "pane e pere"
 
   s = "pane e pere"
Riga 85: Riga 74:
 
   ss = Split(s, " ", "", True)
 
   ss = Split(s, " ", "", True)
 
   
 
   
   For j = 0 To ss.Max
+
   For b = 0 To ss.Max
  <FONT color=006400>' ''Individua la parola contenuta nell'array e la mostra:''</font>
+
  <FONT color=gray>' ''Individua la parola contenuta nell'array e la mostra:''</font>
     If ss[j] Like "*r*" Then Print ss[j]
+
     If ss[b] Like "*r*" Then Print ss[b]
 
   Next
 
   Next
 
   
 
   
  '''End'''
+
  End
 
 
 
Più in generale riguardo all'operatore ''Like'' con il metacarattere <FONT color=#B22222>'''*'''</font> 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";
Riga 100: Riga 88:
  
 
==Con la funzione '''Replace'''==
 
==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:
+
Potremo utilizzare anche la funzione "Replace()".
  '''Public''' Sub Button1_Click()
+
<BR>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 confrontare 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"
+
  Dim $prova As String = "sale e pepe"
 
   
 
   
 
   If Replace($prova, "pepe", "") < $prova then
 
   If Replace($prova, "pepe", "") < $prova then
 
+
     Print "La parola è stata trovata nella stringa !"
     "La parola è stata trovata nella stringa !"
 
 
 
   Endif
 
   Endif
 
   
 
   
  '''End'''
+
  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() 
 +
 
 +
  If Split("Questa è una prova", Chr(32)).Exist("una") Then Print "La parola \"una\" è presente nella stringa !" 
 +
 
 +
End

Versione attuale delle 16:35, 28 giu 2024

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 b As Byte

  s = "pane e pere"

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

  For b = 0 To ss.Max
' Individua la parola contenuta nell'array e la mostra:
    If ss[b] Like "*r*" Then Print ss[b]
  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 confrontare 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
    Print "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()  
 
  If Split("Questa è una prova", Chr(32)).Exist("una") Then Print "La parola \"una\" è presente nella stringa !"  
 
End