Find

vbnino Messages postés 218 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 11 juillet 2010 - 16 juin 2007 à 18:33
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 - 17 juin 2007 à 15:30
Salut!
 
 -Par exemple j'ai dans une RichtextBox : "aaazeerddfe
                                                       zeerdfaz
                                                       ezaerzsdz"

  -Comment récuperer tous les "z" avec find

-Merci

6 réponses

cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
16 juin 2007 à 19:05
Bonsoir,
Récupérer tout les z euh pas plutot la position des z tu veux dire ?
0
vbnino Messages postés 218 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 11 juillet 2010
16 juin 2007 à 19:22
Oui
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
17 juin 2007 à 14:59
        ' TEST
        Dim searchpattern As String = "z" ' la chaine recherchée
        Dim indices(0) As Integer
        Dim saveindices(0) As Integer
        Dim sbase As String = "zrqat,zskska^zz"
        Dim s As String = sbase
        While s.Contains(searchpattern)
            indices(UBound(indices)) = s.IndexOf(searchpattern)
                Array.ConstrainedCopy(indices, 0, saveindices, 0, indices.Length)
            s = s.Substring(s.IndexOf(searchpattern) + 1)
            ReDim indices(indices.Length)
            Array.ConstrainedCopy(saveindices, 0, indices, 0, saveindices.Length)
            ReDim saveindices(saveindices.Length)
        End While

A la fin tu récupères le tableau indices dotn la dernière valeur du tableau est inutilisée(je sais pas pourquoi)

en fait à chaque redim le tableau perds les valeurs donc dans la boucle les tableaux se repassent es valeurs avant de les perdres ce qui fait que ca les gardes.

Bien sûr on peut faire mieux avec les regex.

Redman
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
17 juin 2007 à 15:10
Pardon je corrige car les indices était relatif au s et pas sbase donc :

        ' TEST
        Dim searchpattern As String = "z" ' la chaine recherchée
        Dim indices(0) As Integer
        Dim saveindices(0) As Integer
        Dim sbase As String = zrqat,zskska^zz ' chaine où rechercher
        Dim s As String = sbase
        While s.Contains(searchpattern)
            If indices.Length > 1 Then
                indices(UBound(indices)) = sbase.IndexOf(searchpattern, indices(UBound(indices) - 1) + 1)
            Else
                indices(UBound(indices)) = s.IndexOf(searchpattern)
            End If
            Try
                Array.ConstrainedCopy(indices, 0, saveindices, 0, indices.Length)
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Exclamation)
            End Try
            s = s.Substring(s.IndexOf(searchpattern) + 1)
            ReDim indices(indices.Length)
            Array.ConstrainedCopy(saveindices, 0, indices, 0, saveindices.Length)
            ReDim saveindices(saveindices.Length)
        End While

Redman
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
17 juin 2007 à 15:11
Tu peux enlever les Try Catch.

Redman
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
17 juin 2007 à 15:30
Désolé de poster si vite mais comme je suis en forme et serviable aujourd'hui je te passe aussi le code avec expressions régulières :

        ' TEST
        Dim searchpattern As String = z ' la chaine recherchée
        Dim inputtext As String = "zrqat,zskska^zz"
        Dim reg As New System.Text.RegularExpressions.Regex(searchpattern)
        Dim indices(reg.Matches(inputtext, searchpattern).Count) As Integer
        Dim nb = 0
        For Each m As System.Text.RegularExpressions.Match In reg.Matches(inputtext, searchpattern)
            indices(nb) = m.Index
            nb += 1
        Next

P.S : dans le code précedent j'avais oublié les "" des fois.

Redman
0