IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Chercher un caractere dans un mot


Sujet :

VB.NET

  1. #1
    Membre régulier Avatar de Tornade8912
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 83
    Points : 74
    Points
    74
    Par défaut Chercher un caractere dans un mot
    Bonjour,
    Je tiens à vous dire que si ce sujet à déjà été évoqué je m'en excuse.

    Bon voilà mon problème je voudrai faire un système qui permet de trouver une lettre dans une chaine string (cette chaine ne contient qu'un seul mot).
    Prenons l'exemple de camion. Je voudrai que quand on clique sur un bouton,
    et bien que ce bouton lance une procédure afin de tester la présence du caractère "a" dans camion. Ensuite il faudrait que vb me renvoie la position du caractère "a" dans camion.

    Existe t-il une fonction qui le permet en vb.net ?
    Je vous souhaite une bonne journée en attente d'une réponse.

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 073
    Points
    28 073
    Par défaut
    TaChaine.Contains(LaChaineCherchée) pour savoir si elle y est, ou alors TaChaine.IndexOf(LAchaineCherchée) pour avoir l'index (base 0) du premier caractère de la première occurrence trouvée
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Membre régulier Avatar de Tornade8912
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 83
    Points : 74
    Points
    74
    Par défaut
    Donc si je comprends bien mon code devrait ressembler
    à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim mot As String = "camion"
    If mot.Contains("a") = True Then
           Dim As aInMot As Integer = mot.IndexOf("a") + 1 'je rajoute 1 pour venir à une base "normale"
           MsgBox("La lettre a se trouve :" & aInMot)
    End If

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 073
    Points
    28 073
    Par défaut
    Oui.

    Tu peux ne pas utiliser Contains, et utiliser directement IndexOf, mais il faudra alors tester s'il vaut -1 en cas de lettre non trouvée. Ce qui, au final, niveau code, revient au même.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  5. #5
    Membre régulier Avatar de Tornade8912
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 83
    Points : 74
    Points
    74
    Par défaut
    Ah oui j'oubliais comment dois-je faire si le caractère "a" se trouve plusieurs fois par exemple dans alphabet
    Est-il possible d'afficher dans une msgbox :

    la lettre "a" se trouve à (emplacement du premier "a") et à (emplacement du deuxième "a").
    Dois-je faire une boucle ou existe t-il une fonction qui le permet ?

    Bonne soirée en attente d'une réponse

  6. #6
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonsoir,

    oui bien sûr, en regardant la définition de : String.IndexOf, méthode (System) - MSDN - Microsoft
    on trouve String.IndexOf, méthode (Char, Int32)
    où se trouve un code intéressant pour vous...

  7. #7
    Membre régulier Avatar de Tornade8912
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 83
    Points : 74
    Points
    74
    Par défaut
    J'avoue ne pas comprendre le code donné par MSDN. Pouvez vous me montrer le code avec pour exemple
    le mot "alphabet" ?
    Ça me rendrai beaucoup service

  8. #8
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Citation Envoyé par Tornade8912 Voir le message
    J'avoue ne pas comprendre le code donné par MSDN. Pouvez vous me montrer le code avec pour exemple
    le mot "alphabet" ?
    Ça me rendrai beaucoup service
    Si tu ne comprends pas le contenu c'est que tu as certainement sautés des étapes dans l'apprentissage des bases ou bien que tu manques de pratiques, choses qu'il ne faut pas négliger...la preuve en est...



    Il est certains que pour traiter ce genre de parsing, l'utilisation de regEx n'est pas forcément l'alternative la plus rapide et la moins gourmande en terme de ressource mais si ça peut servir voilà comment je procéderais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       Dim matchs As MatchCollection = Regex.Matches("alphabet", "a")
            For Each m As Match In matchs
                MsgBox("Lettre : " & m.Value & vbNewLine & "Index : " & m.Index.ToString)
            Next
    PS : si tu veux prendre en compte la casse alors à toi de voir comment bien construire ton "Pattern" (= 2ème argument de la signature de la méthode ".Matches") ou bien à toi de gratter le 3ème argument dans cette même signature (IgnoreCase...etc...).


    Je pense que tu as désormais beaucoup de lecture en perspective......


    A+

  9. #9
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    C'est quand même sortir l'artillerie lourde là (enfin après tout dépend du besoin exact derrière )
    Sinon en reprenant l'exemple de la documentation, appliqué au cas actuel ça donnerait un truc dans ce style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim str As String = "alphabet"
    Dim index As Integer = str.IndexOf("a"c)
    Do While index <> -1
        ' utiliser index (ex: Console.WriteLine(index)
        index = str.IndexOf("a"c, index + 1)
    Loop
    À noter que dans le genre "exotique" on pourrait aussi utiliser Linq ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim indices = Aggregate i In str.Select(Function(ch, i) If(ch = "a"c, i, -1))
                  Where i <> -1 Into ToArray()
    ' ici indices "vaudra" { 0, 4 }
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  10. #10
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    C'est quand même sortir l'artillerie lourde là (enfin après tout dépend du besoin exact derrière )
    J'en conviens Sehn, pour le besoin actuel il est clair que RegEx fait partie des gros calibres....hi hi hi... d'ou le pitit layus dans mon message précédent....
    Cependant je considère que lorsqu'on commence à traiter ce genre de parsing de chaîne, qu'à un moment'n'donné Regex deviendra l'alternative la plus adaptée du fait de pouvoir paramétrer et affiner un pattern et ce en quelque ligne seulement.

    voilà voilou...

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/01/2010, 12h32
  2. Chercher une chaine de caracteres dans toute ma base
    Par miltonis dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/09/2007, 17h33
  3. Chercher une parenthese dans une chaine de caracteres
    Par timoth dans le forum VBA Access
    Réponses: 3
    Dernier message: 30/07/2007, 08h50
  4. Chercher caracteres dans toute la page et le remplacer
    Par xclam dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 07/06/2007, 10h14
  5. Caracteres dans un mot de passe
    Par vtmt78 dans le forum Windows XP
    Réponses: 4
    Dernier message: 07/11/2006, 10h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo