PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl: Feststellen aus wieviel Zeichen ein String besteht



Daniel666
04-05-2002, 20:00
Hallo
Wie kann ich in Perl feststellen, aus wieviel Zeichen ein String besteht?
Ich bräuchte das dafür, dass einem String der nur aus zwei Zeichen besteht, noch ein 0 vorne drangehängt wird.
Mit PHP kann man das ja folgendermaßen machen:
ereg("[0-9]{2}",$foo)
Das würde zutreffen, wenn $foo nur aus zwei Zeichen von 0 bis 9 besteht. Mit Perl könnte das ja eventuell mit grep gehen, nur hab ich noch keine Möglichkeit gefunden, die Länge des Strings zu überprüfen.

Sion
05-05-2002, 17:10
Original geschrieben von Daniel666
... einem String der nur aus zwei Zeichen besteht, noch ein 0 vorne drangehängt wird.


Bissl umständlich(?):
$string = "0".$string if $string =~ /../;
Mit dem
if $string =~ /../; schaust du, ob der String 2 (beliebige) Zeichen lang ist.

Daniel666
05-05-2002, 17:53
Hi

Das funktioniert aber noch nicht ganz so, wie ich mir das gedacht hatte:
Es wird jetzt immer eine Null davor gehängt, wenn der String mindestens zweistellig ist, also auch wenn das Ding schon dreistellig ist...

Das ganze ist vielleicht nicht wirklich das wahre, aber wohl die einfachste Lösung.

ponzellus
06-05-2002, 11:57
hi!

if $string =~ /^..$/;
funktioniert.
hier wird auf das erste (^) und letzte ($) zeichen geprueft :)

MfG ponzellus

TommeS73
07-05-2002, 04:01
versuchs mal so:



$b = sprintf ("%03d",$a);


wenn die Zahl kleiner 3 Zeichen ist , wird der Restbetrag bis 3 Zeichen vorne mit Nullen aufgefüllt

sticky bit
25-05-2002, 18:11
length() gibt dir übrigens die Länge eines Strings in einer Skalar Variable zurück. In deinem Fall:



lentgh($string) > 2 || $string = '0' . $string;


Aber mit RegEx ist das auch IMHO echt besser:


$length =~ s/^(..)$/0$1/;


Oder im Falle von reinen Ziffern ist das printf() bzw. sprintf() vielleicht die letztendlich beste Wahl...