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 :

Détection numérique string


Sujet :

VB.NET

  1. #1
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut Détection numérique string
    Bonjour,

    C'est surement simple, mais je ne trouve rien.

    Comment détecter ce string, "172058E01", si il est numérique ou pas ?
    à cause du E ça me détecte numérique, surement à cause que E = exposant
    mais moi je veux qu'il interprète le E comme un E
    donc ce code détecterait Pas Numérique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim toto As String = "172058E01"
     
            If IsNumeric(toto) Then
                MsgBox("C'est numerique")
            Else
                MsgBox("Pas numerique")
            End If
    Merçi!

  2. #2
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    je sais pas s'il existe la fonction que tu cherches dans le Framework. Par contre si tu veux vérifier qu'une chaîne de caractères ne contient que des chiffres c'est assez simple à faire à la main (parcours de la string ou expression régulière).

  3. #3
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Merci jopopmk.
    Je n'y avait pas pensé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim S As String
            Dim Numerique As Boolean = True
     
            For i = 1 To Len(toto)
                S = Mid(toto, i, 1)
                If Not IsNumeric(S) Then
                    Numerique = False
                    Exit For
                End If
            Next i
     
            MsgBox(Numerique)

  4. #4
    Membre éclairé
    Homme Profil pro
    .
    Inscrit en
    Février 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2014
    Messages : 50
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If Integer.TryParse("172058E01",Nothing) then
         'C'est un entier
    Else
         'Ce n'est pas un entier
    End If

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Ou sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result = Toto.Count(Function(c As Char) Not Char.IsNumber(c)) = 0
    (ce qui permet de dépasser la taille d'un integer)

  6. #6
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Merci à vous tous.
    j'aime bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result = Toto.Count(Function(c As Char) Not Char.IsNumber(c)) = 0

  7. #7
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Mon petit code perso (vu que la soluce regex n'a pas été présentée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	string myVal = "123456z";
    	bool isNum = new Regex("^[0-9]+$").IsMatch(myVal);
    	Console.WriteLine(myVal + (isNum ? " est" : " n'est pas") + " numérique");

  8. #8
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Moi j'aime bien la regex de jopopmk.

  9. #9
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Citation Envoyé par ebastien Voir le message
    Moi j'aime bien la regex de jopopmk.
    Merci
    Par contre je m'ai trompé, j'ai -encore- mis du C# alors qu'on cause VB.NET ...

  10. #10
    Membre chevronné Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 002
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Salut,

    je sais pas s'il existe la fonction que tu cherches dans le Framework. Par contre si tu veux vérifier qu'une chaîne de caractères ne contient que des chiffres c'est assez simple à faire à la main (parcours de la string ou expression régulière).
    Bonjour,

    voici deux fonctions qui devraient t'intéresser, il faudra les adapter un peu :

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
        Public Function ValeurDbl(ByRef Chaine As String) As Double
            'Dim chaine2 As String
            Dim c As Char 'Dim c As String
            Dim ca As Integer
            Dim i As Integer
            Dim v As Boolean
            Dim EstNull As Boolean
            Dim n As Integer
            Dim s As StringBuilder
            n = Len(Chaine)
            v = True
            EstNull = True
            s = New StringBuilder(n) 'chaine2 = vbNullString
            For i = 0 To n - 1
                'c = Mid(Chaine, i, 1)
                'If c = "0"c OrElse c = "1"c OrElse c = "2"c OrElse c = "3"c OrElse c = "4"c OrElse c = "5"c OrElse c = "6"c OrElse c = "7"c OrElse c = "8"c OrElse c = "9"c Then
                c = Chaine.Chars(i)
                ca = Asc(c)
                If ca > 47 AndAlso ca < 58 Then
                    s.Append(c) 'chaine2 &= c
                    EstNull = False
                Else
                    'If c = "-" AndAlso chaine2 = vbNullString Then chaine2 = "-"
                    'If c = "-"c AndAlso EstNull Then s.Append("-"c)
                    If ca = 45 AndAlso EstNull Then s.Append("-"c)
                    'If v AndAlso (c = ","c OrElse c = "."c) Then
                    If v AndAlso (ca = 44 OrElse ca = 46) Then
                        If EstNull Then s.Append("0"c) 'If chaine2 = vbNullString Then chaine2 = "0"
                        s.Append("."c)                  'chaine2 &= "."
                        v = False
                    End If
                End If
            Next
            ValeurDbl = CDbl(Val(s.ToString))
        End Function
     
        Public Function ValeurInt(ByRef Chaine As String) As Integer
            'Dim chaine2 As String
            Dim c As Char 'Dim c As String
            Dim ca As Integer
            Dim i As Integer
            Dim v As Boolean
            Dim EstNull As Boolean
            Dim n As Integer
            Dim s As StringBuilder
            n = Len(Chaine)
            v = True
            EstNull = True
            s = New StringBuilder(n) 'chaine2 = vbNullString
            For i = 0 To n - 1
                'c = Mid(Chaine, i, 1)
                'If c = "0"c OrElse c = "1"c OrElse c = "2"c OrElse c = "3"c OrElse c = "4"c OrElse c = "5"c OrElse c = "6"c OrElse c = "7"c OrElse c = "8"c OrElse c = "9"c Then
                c = Chaine.Chars(i)
                ca = Asc(c)
                If ca > 47 AndAlso ca < 58 Then
                    s.Append(c) 'chaine2 &= c
                    EstNull = False
                Else
                    'If c = "-" AndAlso chaine2 = vbNullString Then chaine2 = "-"
                    'If c = "-"c AndAlso EstNull Then s.Append("-"c)
                    If ca = 45 AndAlso EstNull Then s.Append("-"c)
                    'If v AndAlso (c = ","c OrElse c = "."c) Then
                    If v AndAlso (ca = 44 OrElse ca = 46) Then
                        If EstNull Then s.Append("0"c) 'If chaine2 = vbNullString Then chaine2 = "0"
                        's.Append("."c)                  'chaine2 &= "."
                        'v = False
                        Exit For
                    End If
                End If
            Next
            ValeurInt = CInt(Val(s.ToString))
        End Function

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

Discussions similaires

  1. Comment je rendre un JFormattedTextFiled numérique ou String
    Par Abstract_cl dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 19/12/2007, 21h54
  2. Réponses: 3
    Dernier message: 10/10/2007, 17h24
  3. [Débutant] Validation d'une valeur numérique dans une variable String
    Par anto84 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 11/07/2007, 10h26
  4. Conversion std::string vers numérique
    Par mister3957 dans le forum SL & STL
    Réponses: 9
    Dernier message: 26/02/2007, 20h40
  5. Savoir si un string est un numérique
    Par Homer dans le forum Langage
    Réponses: 3
    Dernier message: 05/10/2005, 16h21

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