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

Windows Forms Discussion :

[VS.net] Vérifier le présence d'un caractère dans une chaine


Sujet :

Windows Forms

  1. #1
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 856
    Points : 6 114
    Points
    6 114
    Par défaut [VS.net] Vérifier le présence d'un caractère dans une chaine
    Bonjour, je cherche le moyen de vérifier la présence de 2 caractère "\" dans une variable string.
    Ca va me servir à vérifier le format date, c'est pas nikel mais c'est le seul truc que j'ai trouvé.
    Merci !

  2. #2
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Regarde l'article sur les expressions régulières, elles te permettrons de faire un contrôle beaucoup plus pointu.

    http://lgmorand.developpez.com/dotnet/regex/

  3. #3
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    tonString.IndexOf(...

    mais que veut-tu faire pour les dates ??

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Un simple IndexOf devrait en effet être suffisant

  5. #5
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Citation Envoyé par Morpheus
    Un simple IndexOf devrait en effet être suffisant
    Maios alors il ne saurra pas si les autres caractères sont bien des chiffres.

  6. #6
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    La vérification par l'expression régulière devrait être queque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        System.Text.RegularExpressions.Regex myRegex = new Regex(@"[0-9]{2}[/][0-9]{2}[/][0-9]{4}") 
        bool ok = myRegex.IsMatch(maDate);
    mais je ne l'ai pas testée.

  7. #7
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 856
    Points : 6 114
    Points
    6 114
    Par défaut
    merci, je regarde tout ça et je vous tient au courant

  8. #8
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 856
    Points : 6 114
    Points
    6 114
    Par défaut Merci !
    Alors voici la syntaxe (visual basic.net) à l'aide des expressions régulières :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Imports System.Text.RegularExpressions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    'Vérification du format de la date avec une expression reguliere
    Dim dateformat As New Regex("[0-9]{2}[/][0-9]{2}[/][0-9]{4}")
     
    If (dateformat.IsMatch(TxtDate.Text) = False) Then
            MsgBox("The 'Date of Visit' format is DD/MM/YYYY", MsgBoxStyle.Exclamation)
            Exit Sub
    End If
    Voila, en core merci !

  9. #9
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    La prochaine fois, pense au tag Résolu

    A+


  10. #10
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut Re: Merci !
    Il me semble qu'il y a une petite erreur. tu réduis pour les jours aux chiffres 0 à 3 mais tu 29 par exemple.
    Idem pour le mois 07 par exemple.

    Il me semble que ceci est plus cohérent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "[0-3][0-9][/][0-1][0-9][/][0-9]{4}"
    Tu peux peut être encore poussé un peu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "[0-3][0-9][/][0-1][0-9][/][1-2][90][0-9]{2}"
    Le siècle serait alors obligatoirement 19 ou 20

  11. #11
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 856
    Points : 6 114
    Points
    6 114
    Par défaut
    oui merci, j'ai corrigé entre deux !

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 201
    Points : 132
    Points
    132
    Par défaut
    Le mieux c'est de faire une machine d'état transitions.

    Heu il me semble que c'est ça


  13. #13
    Membre actif
    Avatar de toubib
    Homme Profil pro
    Médecin, developpeur
    Inscrit en
    Août 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Médecin, developpeur
    Secteur : Santé

    Informations forums :
    Inscription : Août 2004
    Messages : 104
    Points : 298
    Points
    298
    Par défaut
    Bonjour
    pourquoi faire compliqué :

    On peut utiliser IsDate( objet) qui retourne True si 'objet' peut être transformé en date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If IsDate("01/02/1945") Then
                MsgBox("date")
    Else
                MsgBox("pas date")
    End If
    Non seulement cela teste les // mais aussi les chiffres et controle la validité de la date: (31/02/1945 n'est pas une date valide).

    Simple Non?

    Salut

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par toubib
    Simple Non?
    Fonction VB6, donc non, mieux vaut faire du .NET :)

    Sinon, entre la regex, qui ne contrôle pas la validité des nombres (31/02/2005 ? :) et la méthode bourrin du DateTime.Parse( bleh ) dans un try/catch, je ne suis pas sûr du tout que la regex soit la plus rapide. Ni la plus simple. Ni la plus précise.

    D'autant qu'avec DateTime.Parse, on peut gérer différentes cultures. Ce que ne font ni la regex, ni la fonction VB6-à-jeter-aux-ordures :)

    Par contre je me demande toujours pourquoi ils n'ont pas mis d'équivalent à TryParse pour DateTime. Sans le paramètre out. Juste pour valider une chaîne...
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  15. #15
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Import System.Text.RegularExpressions
    '...
    Private Const DT_Format = "[0-3][0-9][/][0-1][0-9][/][1-2][90][0-9]{2}"
    '...
    Private Function IsDate(ByVal chaine As String) As Boolean
     Return New Regex(DT_Format).IsMatch(chaine)
    End Function
    '...
    If Not IsDate(TxtDate.Text) Then ....
    Comme çà tout le monde est content
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  16. #16
    Membre actif
    Avatar de toubib
    Homme Profil pro
    Médecin, developpeur
    Inscrit en
    Août 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Médecin, developpeur
    Secteur : Santé

    Informations forums :
    Inscription : Août 2004
    Messages : 104
    Points : 298
    Points
    298
    Par défaut
    Question amicale a Maniak:

    Pour ceux qui font du VB.Net pourquoi rejeter systématiquement, avec grand dédain, les instructions de l'espace VisualBasic?

    VB.Net c'est Framework+VB.Net(c# c'est probablement Framework+C#)

    Dans les faits IsDate est simple pourquoi ne pas l'utiliser? en VB
    Quelles règles poussent à utiliser impérativement des Classes du Framework?

    Ne pas confondre l'Espace VisualBasic (.Net) et les classes de compatibilité VB6 qui sont de bricolage et qui, elles, ne doivent pas être utilisées.

    Cordialement
    Toubib

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Requête pour vérifier la présence d'un enregistrement dans une table.
    Par Mat08 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 22/09/2011, 18h06
  2. [XL-2003] comment tester la présence d'un caractère dans une cellule
    Par fllyann dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 28/12/2010, 21h05
  3. trouve présence d'un caractère dans une chaine
    Par domxaline dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 29/07/2009, 08h59
  4. Tester la présence d'un caractère dans une chaine
    Par sebinator dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/11/2007, 14h23
  5. Réponses: 4
    Dernier message: 29/08/2006, 17h44

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