comment convertir du texte en numérique - Perl - Programmation
Marsh Posté le 26-10-2005 à 11:41:23
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 ?
Marsh Posté le 26-10-2005 à 19:26:27
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
Marsh Posté le 26-10-2005 à 19:28:01
et ta fonction "remplace_car" fait un peu peur !
tu sais en perl ca peut s'impelmenter comme ca: $text =~ s/,/\./g;
Marsh Posté le 27-10-2005 à 16:45:55
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.
Marsh Posté le 27-10-2005 à 18:18:09
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
Marsh Posté le 27-10-2005 à 20:40:38
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.
Marsh Posté le 28-10-2005 à 21:23:14
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...
Marsh Posté le 30-10-2005 à 11:52:09
ta fonction verifier_nombre peut se faire avec une regex :
sub verifier_nbre
{
my $arg = shift;
return $arg=~/^(\d+)\.?(\d*)$/;
}
Marsh Posté le 26-10-2005 à 11:19:37
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