PDA

View Full Version : Cercare dentro una stringa


Carmen
05-02-2005, 09:33
Ciao;

Come posso individuare la presenza di un determinato carattere contenuta in una stringa?

Es. stringa: 123|456|789|4698

Vorrei verificare che ad es. il 456 si già presente o meno

avevo provato così:

If InStr(1, stringa, testodacercare, vbTextCompare) > 0 Then
MsgBox "valore già presente": Exit Sub
End If

però non funziona a dovere in quanto non viene considerato tutto il dato da verificare, ma solo una parte di esso.


Ciao

matpez
05-02-2005, 11:10
Prova così:


If InStr(stringa, testodacercare) > 0 Then
MsgBox "valore già presente": Exit Sub
End If

Carmen
05-02-2005, 12:52
OK! Sembra che funziona. Ti ringrazio...

matpez
06-02-2005, 02:48
...nulla di che :ubriachi:

Carmen
08-02-2005, 10:10
Ciao;

Incredibile ma vero sembra che ancora non faccia in pieno il suo dovere questa funzione.

esempio se la stringa fosse composta dalla cifra 116 e vorrei verificare se esiste il solo n. 6 mi dice che esiste ma e errato in quanto si esiste ma fa parte del 116 e non singolarmente solo il n. 6

:muro: :muro:

matpez
08-02-2005, 11:27
Ma carmen... ehehhehe, quella funzione fa il suo dovere a meraviglia :)

Mettiamo questi esempi con la seguente stringa:

Stringa1="60;160;1600;16000;"


Es1:
Vuoi cercare il numero 60, lo troverà nella posizione 1, ... tutto questo è corretto dato che lui cerca una stringa dentro un'altra stringa! A lui nn importa se sono numeri, indirizzi email o pincopallino, l'importante è che trovi una corrispondenza!

Es2:
Vuoi cercare il numero 160, allora basta che dici -> InStr(Stringa1,"160;") , così lui cerca quel blocco e lo troverà che parte dalla posizione 4


Capito? :oink:

ri
08-02-2005, 11:45
Originariamente inviato da Carmen
Ciao;

Incredibile ma vero sembra che ancora non faccia in pieno il suo dovere questa funzione.

esempio se la stringa fosse composta dalla cifra 116 e vorrei verificare se esiste il solo n. 6 mi dice che esiste ma e errato in quanto si esiste ma fa parte del 116 e non singolarmente solo il n. 6

:muro: :muro:


volessi :|


inoltre quello che tu vuoi è un confronto numerico, che ha una logica di funzionamento diversa da quella della ricerca di una sottostringa

Carmen
08-02-2005, 12:42
La sintassi l'avevo capito ed apparentemente sembrava che funzionava fin quando non mi sono imbattura nella verifica di due numeri come ad es. 116 e 6

Mi diceva che il n. 6 era presente nonostante la stringa fosse composta soltanto cosi

Stringa:"116|"


Per maggiore chiarezza allego l'esempio

Carmen
08-02-2005, 13:04
Facendo delle prove sono arrivata a questa soluzione. Non sò se sia la migliore:


label1="116|216|300|"


ListaDoc = Split(Left(Label1, Len(Label1) - 1), "|")
For i = 0 To UBound(ListaDoc)
If ListaDoc(i) = Text1 Then MsgBox "Dato già presente nella stringa": Exit Sub
Next


Esiste qualche altro metodo migliore??? ;)

matpez
08-02-2005, 23:30
Secondo me è un ottima soluzione :)


Stavo per dirtela io, ma il tanto lavoro mi impedisce di venire sempre sul forum, ma ci sei arrivata da sola, quindi complimenti!!! :p