Schrift
[thread]5794[/thread]

Wert reiner Zahlenwert?



<< |< 1 2 >| >> 15 Einträge, 2 Seiten
skontox
 2003-10-02 20:05
#60331 #60331
User since
2003-08-06
193 Artikel
BenutzerIn
[default_avatar]
Guten Tag!
Könnt Ihr mir mal bitte auf die Sprünge helfen.
Ich muß einen Eingabe-Wert überprüfen, ob es eine reine Zahl ist oder Buchstaben enthält. Wie kann ich das herausbekommen.

Oder nochmal so ausgedrückt:

Sprich wie kann ich gewährleisten, dass der Inhalt nur eine gültige Zahl ist und keine Buchstaben enthält.

Gruß skontox\n\n

<!--EDIT|skontox|1065110753-->
DS
 2003-10-02 20:26
#60332 #60332
User since
2003-08-04
247 Artikel
BenutzerIn
[default_avatar]
Hm, mit =~ /^\d+$/, bei Bedarf kannst auch noch eine Minuszeichen vorn dran erlauben...

Früher hab' ich das gemacht, indem ich überprüft hab, ob die Zahl größer (oder ungleich) 0 ist oder eben '0', allerdings würde das bei Perl nicht so recht gehen, bzw. könnte manche Sachen zulassen, die man gar nicht zulassen möchte, z.B. der String '2b' ergibt in numerischem Kontext nicht 0, auch nicht 1, sondern 2...
[HR]Doomrunner
 2003-10-02 20:28
#60333 #60333
User since
2003-09-04
77 Artikel
BenutzerIn
[default_avatar]
Hi,

das kannste über Reguläre Ausdrücke machen. Das "/\D/" steht dabei für alles was keine Ziffer ist. Also z.B. so:

Code (perl): (dl )
1
2
3
4
$string = "123876as";
if($string =~ /\D/) {
     print qq { Wert ist keine Zahl };
}
skontox
 2003-10-02 20:35
#60334 #60334
User since
2003-08-06
193 Artikel
BenutzerIn
[default_avatar]
Besten Dank Euch beiden,
genau soetwas habe ich gesucht! :-)

Gruß skontox
Dubu
 2003-10-02 20:37
#60335 #60335
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Code (perl): (dl )
1
2
3
4
5
6
7
$string = 100000000000000000;
if ($string =~ /\D/) {
        print qq { Wert ist keine Zahl };
}
print $string;
_ _END_ _
 Wert ist keine Zahl 1e+17

Schade aber auch... ;)
DS
 2003-10-02 20:42
#60336 #60336
User since
2003-08-04
247 Artikel
BenutzerIn
[default_avatar]
[quote=Dubu,02.10.2003, 18:37]
Code (perl): (dl )
1
2
3
4
5
6
7
$string = 100000000000000000;
if ($string =~ /\D/) {
        print qq { Wert ist keine Zahl };
}
print $string;
_ _END_ _
 Wert ist keine Zahl 1e+17

Schade aber auch... ;)[/quote]
Gemein! ;)

Aber du hast getrickst: $string = 100000000000000000;

Das zählt nicht!
Strat
 2003-10-02 22:57
#60337 #60337
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
vielleicht mit Anfuehrungszeichen?
Code: (dl )
1
2
3
4
5
6
7
8
F:\apacheweb\test_8086\html\cgi-bin>perl
$string = "100000000000000000";
if ($string =~ /\D/) {
print qq { Wert ist keine Zahl };
}
print $string;
^Z
100000000000000000
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
betterworld
 2003-10-02 23:32
#60338 #60338
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
[quote=DS,02.10.2003, 18:26]Früher hab' ich das gemacht, indem ich überprüft hab, ob die Zahl größer (oder ungleich) 0 ist oder eben '0', allerdings würde das bei Perl nicht so recht gehen, bzw. könnte manche Sachen zulassen, die man gar nicht zulassen möchte, z.B. der String '2b' ergibt in numerischem Kontext nicht 0, auch nicht 1, sondern 2...[/quote]
Diese Methode ist eigentlich richtig huebsch. So etwas Aehnliches steht glaube ich auch in irgend so einem Manual (perldata iirc) drin. Problem ist, dass es nicht so wirklich konform mit use warnings ist.
Maluku
 2003-10-03 00:54
#60339 #60339
User since
2003-10-02
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
ich würde noch die Zeichen . und , und - erlauben
also sowas wie

Code (perl): (dl )
/^[\d|,|\.|-]+$/
\n\n

<!--EDIT|Maluku|1065128154-->
Code (perl): ()
1
2
3
4
5
&#36_='';
s%%`^.*`s;.*;uhtnmo;;a>lha~a>inu~a>fmk~a>rou~a>duM~a>btl~s;&&&&&&;!d1!l2!b3!i4!f5!r6q(?);e;Z`
`}a>&&&`sub# "1#{#"_=shift#;s^"2^"3#^;``;~`return #"_#}``^!&&`"1(#""2)#\.`Z%;
s~Z~print~g;s/#/\\/g;s/`(.)(.+?)`(.+?)`/s&#36{1}&#36{2}&#36{1}&#36{3}&#36{1}g\;/g;s;&;(.);g;y^"^&#36^;
print;
[E|B]
 2003-10-03 01:03
#60340 #60340
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Schreib es wenn so:

Code: (dl )
if($string !~ /[\d|\,|\-|\.]/)


Dann sparst du dir unnötige Zeichen.\n\n

<!--EDIT|[E|B]|1065128636-->
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2003-10-02 20:05.