Wie zähle ich am einfachsten (am besten mit eine regex) die Zeichen in einem
String?
Frohes Perlen!
Danke, Jan
--
Jan Theofel -- ad...@rst-consulting.de -- www.rst-consulting.de
rst Unternehmensberatungs- und Handelsgesellschaft mbH
Bahnhofstrasse 35 * 71272 Renningen * GERMANY
Phone.: +49-7159-800-450 Fax: +49-7159-800-451
>Wie zähle ich am einfachsten (am besten mit eine regex) die Zeichen in einem
>String?
Wozu denn regex?
perldoc -f length
my $str = 'Sag mir, wieviel Zeichen hat der string...';
print length $str;
Aber wenn Du unbedingt eine regex verwenden willst (dauert zwar ewig
und ist umstaendlich, aber was solls):
print length $1 if $str =~ /(.*)/;
Ist aber nicht anzuraten...
> >Wie zähle ich am einfachsten (am besten mit eine regex) die Zeichen in einem
> >String?
>
> Wozu denn regex?
>
> perldoc -f length
Uhh sorry, da habe ich mich natuerlich total bloed ausgedrueckt!
Ich meinet eigentlich folgendes: Der String ist z.B. 1_10_3_15 und ich
mochte gerne wissen, wieviele _ in diesem String enthalten sind. Also
nicht die Gesamtlänge, sondern die Anzahl bestimmter Zeichen.
BTW: Momentan verwende ich gerade length($string) in der Annahme, dass
die Zahlen jeweils nur eine Ziffer haben. ;-) Und das war natuerlich
nicht richtig.
>
>Hallo Marcel!
>
>> >Wie zähle ich am einfachsten (am besten mit eine regex) die Zeichen in einem
>> >String?
>>
>> Wozu denn regex?
>>
>> perldoc -f length
>Uhh sorry, da habe ich mich natuerlich total bloed ausgedrueckt!
>
>Ich meinet eigentlich folgendes: Der String ist z.B. 1_10_3_15 und ich
>mochte gerne wissen, wieviele _ in diesem String enthalten sind. Also
>nicht die Gesamtlänge, sondern die Anzahl bestimmter Zeichen.
Praeambel:
my $count;
my $str = 'Sag_mir,_wieviel_underscores_hat_der_string...';
Ein Weg:
$count++ while $str =~ m/_/g;
print $count;
Ein anderer Weg (direkt aus Programming Perl, index, und
wahrscheinlich auch in perldoc -f index):
my $pos = -1;
while (($pos = index($str, '_', $pos)) > -1) {
$pos++;
$count++;
}
print $count;
Solltest wahrscheinlich $count initialisieren, damit das "print
$count;" keinen uninitialized warning ausgibt.
Marcel
--
perl -e 'print unpack(q$u$,q$82G5S="!!;F]T:&5R(%!E<FP@2&%C:V5R$)'
> >Ich meinet eigentlich folgendes: Der String ist z.B. 1_10_3_15 und ich
> >mochte gerne wissen, wieviele _ in diesem String enthalten sind. Also
> >nicht die Gesamtlänge, sondern die Anzahl bestimmter Zeichen.
>
> Praeambel:
>
> my $count;
> my $str = 'Sag_mir,_wieviel_underscores_hat_der_string...';
>
> Ein Weg:
>
> $count++ while $str =~ m/_/g;
> print $count;
>
> Ein anderer Weg (direkt aus Programming Perl, index, und
> wahrscheinlich auch in perldoc -f index):
>
> my $pos = -1;
> while (($pos = index($str, '_', $pos)) > -1) {
> $pos++;
> $count++;
> }
> print $count;
Hmmm.
Warum nicht so:
my $str = 'Sag*mir*wieviel*Sternlein*stehen';
my $count = $str =~tr/*//;
print $count, "\n"; # druckt wahrhaftig 4
# _und_ läßt die Sternlein am leben.
Funktioniert übrigens auch für mehrere Zeichen, allerdings nicht für
Zeichenketten.
hth, Hartmut
--
CREAGEN Computerkram Fon: 06424/923826
Hartmut Camphausen Fax: 06424/923827
Kirchstrasse 8 Emil: h.c...@creagen.de
35043 Marburg WWW: http://www.creagen.de/
>>Ich meinet eigentlich folgendes: Der String ist z.B. 1_10_3_15 und ich
>>mochte gerne wissen, wieviele _ in diesem String enthalten sind.
> $count++ while $str =~ m/_/g;
[...]
Marcel, das ist nicht Dein Ernst, oder!?
my $anzahl = $string =~ y/_//;
RTFM: perlop(1) zu tr/// beziehungsweise y///
Martin.
--
___________________________________________________________________
Martin H. Sluka \ tel: +49-171-6905233 / "Urmel aus dem IRC(net)"
Pirckheimerstr. 1 > +49-9123-988531 / <mailto:mar...@sluka.de>
D-91207 Lauf / fax: +49-9123-13875 / <http://martin.sluka.de/>
> Ich meinet eigentlich folgendes: Der String ist z.B. 1_10_3_15 und ich
> mochte gerne wissen, wieviele _ in diesem String enthalten sind.
Falls Du die Zahlen auch noch auswerten mußt, mach doch am Besten
einen split:
@zahlen = split(/_/, $string);
$anzahl_unterstriche= @zahlen - 1;
Gruß,
Meikel
>Marcel Grunauer <marcel....@lovely.net> schrieb:
>> On Tue, 10 Aug 1999 14:25:25 +0200, Jan Theofel
>> <jthe...@rst-consulting.de> wrote:
>
>>>Ich meinet eigentlich folgendes: Der String ist z.B. 1_10_3_15 und ich
>>>mochte gerne wissen, wieviele _ in diesem String enthalten sind.
>
>> $count++ while $str =~ m/_/g;
>[...]
>
>Marcel, das ist nicht Dein Ernst, oder!?
>
> my $anzahl = $string =~ y/_//;
>
>RTFM: perlop(1) zu tr/// beziehungsweise y///
Wusste ich noch nicht, dass tr auch mitzaehlt. Echt.