1. #1
    Nouveau Membre du Club
    Inscrit en
    mars 2006
    Messages
    581
    Détails du profil
    Informations forums :
    Inscription : mars 2006
    Messages : 581
    Points : 36
    Points
    36

    Par défaut test chaine numérique

    Bonjour,

    Comment savoir qu'une chaine est numérique ? qu'elle ne comporte pas de caractére alpha

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    décembre 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : décembre 2012
    Messages : 43
    Points : 90
    Points
    90

    Par défaut

    Avec une regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ( $var =~ m/^\d+$/ ) {
    print " numérique\n";
    }
    else {
    print " alphanumérique\n";
    }
    edit :
    s'il y a présence du caractère ''-", il faut modifier la ragex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ( $var =~ m/^-?\d+$/ ) {
    print " numérique\n";
    }
    else {
    print " alphanumérique\n";
    }

  3. #3
    Expert Confirmé Sénior


    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mai 2012
    Messages : 1 676
    Points : 4 314
    Points
    4 314
    Billets dans le blog
    1

    Par défaut

    Il faut aussi tenir compte d'éventuels points ou virgules (sépérateurs décimal ou milliers) dans le nombre. (Je ne parle pas de notation scientifique, de nombres complexes ou de numériques hexadécimaux, ce sont des cas particuliers, mais il ne fait les oublier complètement.

    )
    Articles sur La programmation fonctionnelle en Perl : 1. les opérateurs de liste; 2. les fonctions d'ordre supérieur; 3. étendre le langage.
    Tutoriels De Perl 5 à Perl 6: 1. Les bases du langage; 2. Les nouveautés.

    ________
    Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés.

  4. #4
    Membre régulier Avatar de elvivo
    Inscrit en
    mai 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 105
    Points : 80
    Points
    80

    Par défaut

    Ou tu peux faire ca:
    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
    use strict;
    use warnings;
     
    use Test::More;
     
    ok(isNumber('123'), '123 is a number');
    ok(isNumber('-123'), '-123 is a number');
    ok(isNumber('123.456'), '123.456 is a number');
    ok(isNumber('-123.456'), '-123.456 is a number');
    ok(!isNumber('123a'), '123a is NOT a number');
    ok(isNumber('0'), '0 is a number');
     
    done_testing();
     
    sub isNumber {
    	my ($num) = @_;
     
    	no warnings;
    	return ($num + 0e0 eq $num) ? 1 : 0;
    }
    In code we trust !!

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