PDA

Visualizza la versione completa : caratteri in stringa (vb)


fisica
12-09-2002, 17:34
c' un modo per scoprire quante volte un gruppo di
caratteri contenuto in una stringa?
ho provato con:



Function quantevolte(dovecercare, cosacercare)
Dim Position As Integer
Dim num As Integer
Dim pos As Integer
Dim quante As Integer
For Position = 1 To Len(dovecercare)
pos = InStr(Position, dovecercare, cosacercare)

If pos = num Then

Else
quante = quante + 1
num = pos
End If

d.Text = quante
Next
End Function

ma funziona solo per caratteri singoli e non per pi di un carattere


grazie

ciao

darkblOOd
12-09-2002, 17:46
scusami ma non mi ricordo la definizione della funzione InStr: parla SOLO di singoli caratteri? Non parla di stringhe? :master:

msdn docet


Returns the position of the first occurrence of one string within another.

biifu
12-09-2002, 17:47
la stringa da cercare con instr pu anche essere "MJgbyfgyucvuyt ftftf"

xegallo
12-09-2002, 17:48
Public Function QuanteVolte(sDoveCercare As String, sCosaCercare As String) As Integer
Dim i As Integer
Dim iMax As Integer
Dim booFiniti As Boolean
Do Until booFiniti = True
i = i + 1
If i > Len(sDoveCercare) Then
booFiniti = True
Exit Do
End If
i = InStr(i, sDoveCercare, sCosaCercare)
If i > 0 Then
iMax = iMax + 1
Else
booFiniti = True
Exit Do
End If
Loop
QuanteVolte = iMax
End Function

darkblOOd
12-09-2002, 17:49
Originariamente inviato da xegallo


Public Function QuanteVolte(sDoveCercare As String, sCosaCercare As String) As Integer
Dim i As Integer
Dim iMax As Integer
Dim booFiniti As Boolean
Do Until booFiniti = True
i = i + 1
If i > Len(sDoveCercare) Then
booFiniti = True
Exit Do
End If
i = InStr(i, sDoveCercare, sCosaCercare)
If i > 0 Then
iMax = iMax + 1
Else
booFiniti = True
Exit Do
End If
Loop
QuanteVolte = iMax
End Function



:eek:

InStr(x, StringaInCuiCercare, "AxzdiknpoweRDFIOJAOE")

xegallo
12-09-2002, 17:52
Originariamente inviato da darkblOOd



:eek:

InStr(x, StringaInCuiCercare, "AxzdiknpoweRDFIOJAOE") :master:

darkblOOd
12-09-2002, 17:53
Originariamente inviato da xegallo
:master:

:gren:

era per dire!

Se c' una funzione che gi svolge quel compito, perch ti ammazzi a scriverne una tu? A meno che non ci vuoi fare capire che lavori in MS e che sei l'autore della func.... :gren:

:ciauz:

xegallo
12-09-2002, 17:59
Originariamente inviato da darkblOOd


:gren:

era per dire!

Se c' una funzione che gi svolge quel compito, perch ti ammazzi a scriverne una tu? A meno che non ci vuoi fare capire che lavori in MS e che sei l'autore della func.... :gren:

:ciauz:
istr ti da la posizione del primo carattere della striga "AxzdiknpoweRDFIOJAOE"
se la stringa fosse :
"zjkgkifdsigAxzdiknpoweRDFIOJAOEklhrrhdfAxzdiknpowe RDFIOJAOEAxzdiknpoweRDFIOJAOEllyotrhyhuiorAxzdiknp oweRDFIOJAOEklujgherAxzdiknpoweRDFIOJAOE" quale sarebbe il risultato?
la mia func ti ritorna un numero che il numero di volte che trova la stringa che esattamente quello che voleva Fisica
poi se noti quella funzione l'ho usata pure io

PUNKABBESTIA
12-09-2002, 18:00
cos + semplice, prova.....

Dim CosaCercare As String
Dim i As Integer
Dim posizione As Integer
Dim offset As Integer
Dim DoveCercare As String

DoveCercare = "AABCDAAFCAAAA"
CosaCercare = "AA"

offset = Len(CosaCercare)
posizione = 1

While Not posizione >= Len(DoveCercare)
If InStr(posizione, DoveCercare, CosaCercare) > 0 Then
i = i + 1
posizione = InStr(posizione, DoveCercare, CosaCercare) + offset
Else
posizione = posizione + 1
End If

Wend


MsgBox i

fisica
12-09-2002, 18:02
in effetti mi serviva esattamente quello.

grazie a tutti

ciao

Loading