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 :

[vb2008] Comment savoir si une string n'est composé que de lettre ou de souligné


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut [vb2008] Comment savoir si une string n'est composé que de lettre ou de souligné
    Bonjour,

    Je recherche une méthode en vb.net met permettant de savoir si une chaine de caractère est composé de caractère [a-z] [A-Z] et du caractère souligné.

    en Delphi j'ai cette expression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    If not (Chr[i] in ['A'..'Z','a'..'z','_'] ) then
    Message Erreur
    J'ai essayé avec cette regex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if (Regex.IsMatch(Machaine,"[A-Za-z]")) then
    Mais il ne semble pas correctement filtrer et je ne vois pas comment rajouter la verification du caractère underscore.

    Si qqn a une idée je suis preneur

    Je continue a chercher

    ++

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par narutobaka Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if (Regex.IsMatch(Machaine,"[A-Za-z]")) then
    Mais il ne semble pas correctement filtrer et je ne vois pas comment rajouter la verification du caractère underscore.
    Comme ça, tout simplement...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (Regex.IsMatch(Machaine,"[A-Za-z_]")) then

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonsoir,
    à tester :
    Il faut aussi tester l'expression du début (^) jusqu'à la fin ($), au moins un (+) caractère alphanumérique français, donc y compris les accents (\w) en excluant les nombres (-[0-9]).

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut operteur like et caractere souligne
    bonjour narutobaka
    Aurais tu oublie le bon operateur Like?
    Un peu comme l'operateur 'in" de pascal.Tres puissant.
    voici le code dans le cas souleve.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    'Symboles reserves de like et significations
    '? Tout caractère unique
    '* Zéro ou plusieurs caractères
    '# Tout chiffre (0-9)
    '[ charlist ]  Tout caractère présent dans charlist
    '[! charlist ] Tout caractère absent(caractere à exclure) 
    'Si un des symboles reserves ci-dessus  figure 
    'dans le Modele de chaine  à tester le mettre entre crochet
    Option Strict On
    Option Compare Text
    Public Class Form2
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            'Test 1
            'Affiche dans TextBox1 les caracteres correspondants
            'Affiche dans TextBox2 les caracteres non-correspondants 
            Me.TextBox1.Clear()
            Me.TextBox2.Clear()
            Dim testCheck As Boolean = False
            'Modele Alphanumetique
            Dim strPattern As String = "[a-zA-Z0-9]"
            Dim narutoStr As String = "NaRUtoBAKA_45"
     
            For Each ch As Char In narutoStr
                testCheck = ch Like strPattern
                If testCheck Then
                    Me.TextBox1.Text = Me.TextBox1.Text & ch
                Else
                    Me.TextBox2.Text = Me.TextBox2.Text & ch
                End If
            Next
     
        End Sub
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            'Test 2 
            Me.TextBox1.Clear()
            Me.TextBox2.Clear()
            Dim testCheck As Boolean = False
            'Modele Alphanumetique +  caracteres soulignes
            Dim strPattern As String = "[a-zA-Z_]"
            Dim narutoStr As String = "AkABot_URaN_9"
     
            For Each ch As Char In narutoStr
                testCheck = ch Like strPattern
                If testCheck Then
                    Me.TextBox1.Text = Me.TextBox1.Text & ch
                Else
                    Me.TextBox2.Text = Me.TextBox2.Text & ch
                End If
            Next
        End Sub
     
     End Class
    BON CODE....

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    bonjour,

    @mabrouki, oulah tu as etais cherché ca où? y a nettement plus simple avec la methode ismatch.

    @tomlev Merci pour ta réponse, j'ai utilisé cette regex.

    Mon soucis venais surtout du fait que je voulais qu'il affiche un message d'erreur quand la chaine de caractère ne correspondait pas à l'expression régulière, j'avais ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim ExpressionReg as System.Text.RegularExpressions.regex = _
    New System.Text.RegularExpressions.regex("[A-Za-z_]{8}")
     
    If Not ExpressionReg.IsMatch(Mon_Texte) then
    Mon_Message_Erreur
    Encore merci pour votre aide

    Je met le post en résolu

    ++

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    bonjour,

    J'ai un ptit soucis avec ma regex. Apperemment {8} verifie que l'on est au moins 8 caractères.

    Je cherche l'expression indiquant strictement 8 caractères.

    Si quelqu'un à une idée.

    Je vais continuer mes recherches

    ++

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    bonjour,
    à mon avis il faut délimiter la string, pour demander que du début à la fin, il n'y ait que 8 caractères.
    A tester :

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par narutobaka Voir le message
    Apperemment {8} verifie que l'on est au moins 8 caractères.
    Non, ça veut dire exactement 8 occurrences de ce qui précède (dans ton cas un caractère dans la plage [A-Za-z_])

    Le problème, c'est qu'une chaine avec plus de 8 de ces caractères contient une sous-chaine de 8... et donc ça match ! Pour éviter ce problème, utilise les caractères "^" (début de ligne) et "$" (fin de ligne)

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Tout à fait TomLev, et je crois que ça fait 2 fois, dans cette discussion que je le dis...
    Ensuite j'aime bien ma première proposition qui acceptera (nous sommes en français), par exemple, la chaine "pétition" :
    Proposition, largement empruntée à stormimon.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par chrismonoye Voir le message
    Ensuite j'aime bien ma première proposition qui acceptera (nous sommes en français), par exemple, la chaine "pétition"
    Bah oui mais ça dépend du besoin... il veut peut-être pas accepter les caractères accentués

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    bonjour,

    Et encore merci pour vos réponses.

    J'ai utilisé cette solution :

    Je ferai gaffe à l'avenir à la délimitation de la chaine.

    Je garde sous le coude la version avec la gestion des caractères accentué, même si dans mon cas il ces derniers ne sont correspondent pas à des caractères autorisés.

    Ce cou si je peux repasser mon post en résolu.

    merci

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

Discussions similaires

  1. [PHP 5.3] Comment savoir si une string est dans une variable
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 29/10/2011, 15h08
  2. Réponses: 2
    Dernier message: 21/02/2006, 17h53
  3. Comment savoir si une fenêtre s'est fermée
    Par niuniuk36 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 12/05/2005, 14h49
  4. Comment savoir si une impression s'est bien déroulé?
    Par Cyrilh7 dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/11/2003, 20h49
  5. Réponses: 4
    Dernier message: 10/09/2002, 17h09

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