Tom P.: String auf Zahlen prüfen.

Hallo,

bräuchte mal wieder eure Hilfe.
Ist bestimmt ganz einfach.
Ich hab eine String in einer Variablen und möchte prüfen ob dieser ausschließlich aus Zahlen besteht. Soweit ich weis sollte das mit Regulärenausdrücken hinzubekommen sein. Aber wie?
Ich finde einfach nicht die richtigen "ausdrücke".

Ich hoffe ihr könnt mir helfen.

Danke schon mal im vorraus.

Tom

  1. Hi,

    Ich hab eine String in einer Variablen und möchte prüfen ob dieser ausschließlich aus Zahlen besteht. Soweit ich weis sollte das mit Regulärenausdrücken hinzubekommen sein.

    oder durch Prüfung, ob der String plus 0 noch immer gleich dem String ist.

    Aber wie?
    Ich finde einfach nicht die richtigen "ausdrücke".

    Welche hast Du denn gefunden?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. use Mosche;

      Ich hab eine String in einer Variablen und möchte prüfen ob dieser ausschließlich aus Zahlen besteht. Soweit ich weis sollte das mit Regulärenausdrücken hinzubekommen sein.

      oder durch Prüfung, ob der String plus 0 noch immer gleich dem String ist.

      Du meinst also folgendes:
      my $num; # hier deine Zahl

      print "Ist eine Zahl" if $num+0 eq $num;

      Funktioniert aber nicht immer, z.B. nicht mit 0 am Ende der Zahl (nach dem Komma)

      $num = '1.000'
      '1.000' + 0 == 1 eq '1'
      '1' ne '1.000'

      use Tschoe qw(Matti);

      --
      Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
      Webapplikationen in C++ entwickeln
  2. Hallo

    Ich kenne das jetzt zwar nur vom PHP, aber du kannst ja mal probieren, ob das auch im Perl geht:

    if (ereg("[0-9]", $variable){
    echo "Variable besteht nur aus Zahlen";}

    Nico

    1. Hi,

      if (ereg("[0-9]", $variable){
      echo "Variable besteht nur aus Zahlen";}

      Das prüft, ob irgendwo in $variable eine Ziffer vorkommt - über die restlichen Zeichen ist gar nichts ausgesagt.
      Das würde also auch bei "A1B" zutreffen.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. echt? na gut.. tschuldigung

  3. Hallo,

    http://de.selfhtml.org/cgiperl/sprache/regexpr.htm

    gruss

    --
    no strict;
    no warnings;
    awesome, awesome to the max
  4. Hi,

    Ich hab eine String in einer Variablen und möchte prüfen ob dieser ausschließlich aus Zahlen besteht.

    Hm. Und wie soll das gehen, daß ein String mehrere Zahlen enthält und sonst nichts, also keinerlei Trennzeichen? Woran soll dann zu erkennen sein, daß es sich nicht um eine einzige Zahl handelt?

    Oder meinst Du Ziffern, wenn Du von Zahlen sprichst?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hm. Und wie soll das gehen, daß ein String mehrere Zahlen enthält und sonst nichts, also keinerlei Trennzeichen? Woran soll dann zu erkennen sein, daß es sich nicht um eine einzige Zahl handelt?

      Oder meinst Du Ziffern, wenn Du von Zahlen sprichst?

      cu,
      Andreas

      Im Prinzip  sollte der "string" nur eine zahl sein, also 1, 98, 123, ... ganzzahlig quasi

  5. Hallo Tom,

    es ist wirklich ganz einfach, im Endeffekt möchtest du folgendes prüfen: Besteht die Zeichenkette von Anfang (^) bis Ende ($) aus aus einer oder mehreren (+) Ziffern (\d). In einen regulären Ausdruck übersetzt sieht das dann so aus: ^\d+$
    Mit perldoc -q "How do I determine whether a scalar is a number/whole/integer/float?" findest du noch ein paar andere Varianten zur Überprüfung von Skalaren auf Zahlen mittels regulärer Ausdrücke.

    Von der Variante des Addierens mit 0 möchte ich dir abraten, da das nicht sauber ist und dir entsprechend auch eine Warnung ausgegeben wird, wenn du mit -w arbeitest (Siehe hierzu auch http://de.selfhtml.org/cgiperl/sprache/intro.htm#programmierstil).

    Gruß
    Norbert

  6. Danke an alle!

    Hab das Problem im endeffekt so gelöst:

    $zahl ~= /\D/;

    Seht auch im SelfHTML so drin :-). Manchmal sieht man halt den Wald vor lauter Bäumen nicht ;-).