Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1401 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  comment convertir du texte en numérique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comment convertir du texte en numérique

n°1231360
may17
Posté le 26-10-2005 à 11:19:37  profilanswer
 

comment convertir une chaine en numeric en perl ?
l'execution ne marche pas
#programme principal
 
$texte = "1233a";
$texte = remplace_car($texte, ",","\." );
 
if (verifier_nombre($texte)) {print (" ok" );}
 
pour verifier que le texte est un nombre
sub verifier_nombre{
     local($texte) = @_;
     $texte =(numeric) $texte;
     if ($texte =~ /[+-]?(\d+\.\d+|\d+\.|\.\d+)|\d+/){
     print $texte;
     print "\n";
     print " est un nombre";
     print "\n";  
     return(1);
     }  
        else {  
      print $texte;
      print "\n";
      print "ce n'est pas un nombre";
      return(0);
       }
}


Message édité par may17 le 26-10-2005 à 11:50:09
mood
Publicité
Posté le 26-10-2005 à 11:19:37  profilanswer
 

n°1231383
Elmoricq
Modérateur
Posté le 26-10-2005 à 11:41:23  profilanswer
 

Les titres en majuscule sont interdits par la charte du forum, tu devrais l'éditer.
 
Sinon, pour répondre à ta question, les conversions sont normalement automatiques. Que souhaites-tu faire exactement ?

n°1231839
pospos
Posté le 26-10-2005 à 19:26:27  profilanswer
 

Hmm ca ressemble pas trop à du perl ca!
on ne peut pas faire de casting en perl (ton "$texte=(numerci)$texte" ).
 
Sinon effectivement si tu veux tester q'une chaine corespond bien entierement à un nombre tu peux utiliser une regexp, ou plus simplement ce module:
http://search.cpan.org/~chocolate/ [...] Numeric.pm

n°1231840
pospos
Posté le 26-10-2005 à 19:28:01  profilanswer
 

et ta fonction "remplace_car" fait un peu peur !
tu sais en perl ca peut s'impelmenter comme ca: $text =~ s/,/\./g;

n°1232712
matafan
Posté le 27-10-2005 à 16:45:55  profilanswer
 

En Perl, les chaines et les nombres c'est la meme chose a partir du moment ou la chaine represente un nombre. Dans ce cas la variable est interpretee comme du texte ou comme un nombre, suivant le contexte.

n°1232829
pospos
Posté le 27-10-2005 à 18:18:09  profilanswer
 

matafan a écrit :

a partir du moment ou la chaine represente un nombre.


oui, et c'est justement ce que cette personne veut savoir.
par exemple "4564a" sera interpreté comme le chiffre 4564 en contexte de numerique, mais cette personne voudrait rejetter cette chaine

n°1232952
matafan
Posté le 27-10-2005 à 20:40:38  profilanswer
 

Dans ce cas tu peux faire simplement :

if ($i*1 eq $i) {print "Number\n"} else {print "NaN\n"}


 
Edit : faudrait faire quelque chose pour les \, c'est penible. Enfin bon y'a un \ devans, les n, quoi.


Message édité par matafan le 27-10-2005 à 20:42:51
n°1233870
pospos
Posté le 28-10-2005 à 21:23:14  profilanswer
 

ouai pas mal comme idée! simple et propre
reste à voir si il veut etretolérant aux +, "," à la place de ".", "." pour separer les milliers, espaces,etc...

n°1234398
couak
Posté le 30-10-2005 à 11:52:09  profilanswer
 

ta fonction verifier_nombre peut se faire avec une regex :
 
sub verifier_nbre
{
     my $arg = shift;
     return $arg=~/^(\d+)\.?(\d*)$/;
}


Message édité par couak le 30-10-2005 à 11:53:18

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  comment convertir du texte en numérique

 

Sujets relatifs
analyseur de texte parseur htmlVbscript - Convertir un fichier TXT du format Unicode vers ANSI
concatener du texte à un champ, avec un UPDATE ??Défilement du texte
Comment mettre en forme du texte sous la console ?Juste un texte à positionner... Juste...
Convertir "è" en "é"se positionner à un endroit dans un texte
Editeur de texte WYSIWYG[SQL] Convertir une donnée numérique en texte et/ou en date
Plus de sujets relatifs à : comment convertir du texte en numérique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR