Compter le nombre d'occurence dans une chaine de caractères

Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013
- - Dernière réponse : cs_dayvid
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013
- 1 janv. 2013 à 18:40
Bonsoir

J'ai rien trouvé qui parle de ceci, qui plus est, y à t-il une fonction pour faire ça dans VB ?
"Compter le nombre d'occurence dans une chaine de caractères"
Exemple:

" Abc def abc Ghi Def abc jkl ghi abc Mno Jkl "

Nombre de "abc" = 3
Nombre de "Abc" = 1

Et aussi se qui est dommage, pour la recherche avec "InStr()"
de pas pouvoir lui dire de commencer et / ou de finir la recherche à tel endroit !

Sinon j'aurais crée une fonction avec elle mais c'est impossible là !
Afficher la suite 

10 réponses

Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013
0
Merci
Mince, grillé, j'ai trouvé se qui me faut en bas de la page, c'est curieux ça quand même
Faut écrire un message pour voir ses aide en bas ?!
Commenter la réponse de cs_dayvid
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Bonjour,
Avant de regarder en bas ===>> regarde donc en haut ===>> tu y as un moteyur de recherche bien plus précis


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013
0
Merci
Oui, c'est se que j'ai fais, j'ai fais "Compter", "Compter nombre occurrence", "Count"
Mais j'ai pas trouvé

C'est quand même marrant ça, ont à la réponse des que ont écrie le message MDR !
Enfin non c'est pas drôle en faite , je fais l’effort de rechercher pour justement ne pas ennuyer les gents et paf voilà ma récompense

Excusez-moi pour le dérangement mais...
Comme ont ne peut pas éditer ces propres messages et ni les supprimer et ba voilà quoi, pourquoi d'ailleurs ?
Commenter la réponse de cs_dayvid
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
On ne trouve que lorsque l'on sait exprimer ce que l'on cherche
A ce propos : tu possèdes MSDN/VB.Net, roi. Moi non (pas VB.Nettiste), raison pour laquelle je consulte MSDN sur internet. Et je le fais en anglais. Roi, tu l'as en français sur ta machine.
Ou vais-je chercher ? ===>>> "ché pa", mais quand je vois une rubrique disant String Manipulation Summary (= résumé des manipulations de chaîne), je me dis bêtement ; "tiens tiens !" ===>> je l'ouvre ===>>
Tapez le texte de l'url ici.
=>> j'y vois (tiens tiens !) : ===>>
Return a specified number of substrings. ===>> Split, Join

>> Ah Ah ! ===>> je clique sur le mot Split, donc ===>> et ?? ===>>
Tapez le texte de l'url ici.
J'ai de la chance ?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013
0
Merci
J'ai fais ça grâce à un code (de yocrita), je l'es juste modifier:
Module Module1

    ''' <summary>
    ''' Permet de renvoyer le nombre d'occurence d'une sous chaine dans une chaine de caractères
    ''' </summary>
    ''' La chaine de caractère ou rechercher


    ''' La chaine à rechercher


    ''' <returns>Renvoie le nombre de fois qu'à été trouve la chaine dans la chaine de caractères</returns>
    ''' <remarks></remarks>
    ''' 
    Function CountString(Chaine As String, ChaineChercher As String, Optional RespecterCase As Boolean = False) As Long
        If RespecterCase Then
            Return (Len(Chaine) - Len(Replace(Chaine, ChaineChercher, "", , , 0))) / Len(ChaineChercher)
        Else
            Return (Len(Chaine) - Len(Replace(Chaine, ChaineChercher, "", , , 1))) / Len(ChaineChercher)
        End If
    End Function

    'Exemple d'utilisation:
    Dim Chaine As String = " Abc def abc Ghi Def abc jkl ghi abc Mno Jkl "
    Dim ChaineChercher As String = "abc"

    Sub Main()

        Console.Write(CountString(Chaine, ChaineChercher, False))
        Console.ReadLine()

    End Sub

End Module
Commenter la réponse de cs_dayvid
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
46
0
Merci
Bonjour

d'abord
met ton projet à option strict on
projet -> properties -> onglet(compile)
et si tu codes en net retire l'apport du visual basic
projet -> properties -> references
et en bas dans la liste décoche microsoft.visualbasic

un code un peu plus nette
en fin plus net

Private Function CountString(ByVal str1 As String, ByVal stringsearch As String, Optional ByVal matchcase As Boolean = False) As Integer
        If Not matchcase Then
            Return (str1.Length - str1.Replace(stringsearch, String.Empty).Length) \ stringsearch.Length
        Else

            Return (str1.ToUpper.Length - str1.ToUpper.Replace(stringsearch.ToUpper, String.Empty).Length) \ stringsearch.Length
        End If

    End Function
Commenter la réponse de cs_ShayW
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
46
0
Merci
plutot

Private Function CountString(ByVal str1 As String, ByVal stringsearch As String, Optional ByVal matchcase As Boolean = False) As Integer
'ex abc et AbC différent
        If  matchcase Then
            Return (str1.Length - str1.Replace(stringsearch, String.Empty).Length) \ stringsearch.Length
        Else
'abc ABC abc le meme string
            Return (str1.ToUpper.Length - str1.ToUpper.Replace(stringsearch.ToUpper, String.Empty).Length) \ stringsearch.Length
        End If

    End Function
Commenter la réponse de cs_ShayW
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013
0
Merci
Merci beaucoup
Commenter la réponse de cs_dayvid
0
Merci
Bonjour,

Sinon, il y a aussi les expressions régulières :
Dim Chaine As String = "AbcdefabcGhiDefabcjklghiabcMnoJkl "
Dim reg As New System.Text.RegularExpressions.Regex("(abc)")
Dim matches As System.Text.RegularExpressions.MatchCollection = reg.Matches(Chaine)
MessageBox.Show(matches.Count.ToString)
Commenter la réponse de Utilisateur anonyme
Messages postés
212
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
12 février 2013
0
Merci
AH pas mal ça aussi !!!
Merci !
Commenter la réponse de cs_dayvid