Stringüberprüfung

Stringüberprüfung

am 04.04.2006 19:58:20 von Karsten

Hi,

ich habe ein String, z.B "1624", oder auch "156gt".
Ich möchte jetzt testen ob im String, egal wie lang, nur Zahlen und
keine Buchstaben enthalten sind.
Wie kann ich das anstellen?
Leider konnte ich bei den regulären Ausdrücken nichts passendes finden,
da er bei einer gefundenden Ziffer, ein Erfolg meldet.
mein Versuch: if ($string = /\d/);

thx Karsten

Re: Stringüberprüfung

am 04.04.2006 20:11:52 von Wolf Behrenhoff

Karsten schrieb:
> Hi,
>
> ich habe ein String, z.B "1624", oder auch "156gt".
> Ich möchte jetzt testen ob im String, egal wie lang, nur Zahlen und
> keine Buchstaben enthalten sind.

Du meinst sicher, dass er nur _Ziffern_ (oder nur eine Zahl) enthalten
darf, oder?

> Wie kann ich das anstellen?
> Leider konnte ich bei den regulären Ausdrücken nichts passendes finden,
> da er bei einer gefundenden Ziffer, ein Erfolg meldet.
> mein Versuch: if ($string = /\d/);

/^\d+$/

Oder lies
perldoc -q "scalar is a number"

Wolf

Re: Stringüberprüfung

am 05.04.2006 01:53:37 von Maluku

Karsten schrieb:
> mein Versuch: if ($string = /\d/);
Da fehlt was: ^

bla() if $string =~ /^\d$/;
oder
bla() unless $string =~ /\D/;
2. ist denke ich mal schneller:


--
$_='';s%%`^.*`s;.*;uhtnmo;;a>lha~a>inu~a>fmk~a>rou~a>duM~a>b tl~s;&&&&&&;
!d1!l2!b3!i4!f5!r6q(?);e;Z``}a>&&&`sub# "1#{#"_=shift#;s^"2^"3#^;``;~`
return #"_#}``^!&&`"1(#""2)#\.`Z%x;s~Z~print~g;s/#/\\/g;
s/`(.)(.+?)`(.+?)`/s$1$2$1$3$1g\;/gsx;s;&;(.);g;y^"^$^;print ;

Re: Stringüberprüfung

am 05.04.2006 18:22:19 von Karsten

Marc Lucksch wrote:

> Karsten schrieb:
>> mein Versuch: if ($string = /\d/);
> Da fehlt was: ^

sorry hatte ich vergessen, ist im Original natürlich enthalten ;o)

> bla() if $string =~ /^\d$/;

thx Karsten

Re: Stringüberprüfung

am 06.04.2006 00:15:46 von Oliver Block

Karsten wrote:

> Hi,
>
> ich habe ein String, z.B "1624", oder auch "156gt".
> Ich möchte jetzt testen ob im String, egal wie lang, nur Zahlen und
> keine Buchstaben enthalten sind.
> Wie kann ich das anstellen?
> Leider konnte ich bei den regulären Ausdrücken nichts passendes finden,
> da er bei einer gefundenden Ziffer, ein Erfolg meldet.
> mein Versuch: if ($string = /\d/);
>
> thx Karsten

$string =~ /[^0-9]/;
$string =~ /\D/;

ist wahr, falls Zeichen enthalten sind, die keine Ziffern sind. Du willst ja
nicht wissen, ob Zahlen enthalten sind, sondern ob nicht-Zahlen enthalten
sind!

Re: Stringüberprüfung

am 06.04.2006 15:58:33 von Matthias Peick

Wolf Behrenhoff skribis:

> Du meinst sicher, dass er nur _Ziffern_ (oder nur eine Zahl) enthalten
> darf, oder?

Ich hoffe, er meint Ziffern. Das Prüfen auf eine Zahl ist nämlich
komplizierter.