Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Zeichen in einem String zählen

429 views
Skip to first unread message

Jan Theofel

unread,
Aug 10, 1999, 3:00:00 AM8/10/99
to

Hallo zusammen!

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

Marcel Grunauer

unread,
Aug 10, 1999, 3:00:00 AM8/10/99
to
On Tue, 10 Aug 1999 13:49:23 +0200, Jan Theofel
<jthe...@rst-consulting.de> wrote:

>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...


Jan Theofel

unread,
Aug 10, 1999, 3:00:00 AM8/10/99
to Marcel Grunauer

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.

BTW: Momentan verwende ich gerade length($string) in der Annahme, dass
die Zahlen jeweils nur eine Ziffer haben. ;-) Und das war natuerlich
nicht richtig.

Marcel Grunauer

unread,
Aug 10, 1999, 3:00:00 AM8/10/99
to
On Tue, 10 Aug 1999 14:25:25 +0200, Jan Theofel
<jthe...@rst-consulting.de> wrote:

>
>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$)'

H. Camphausen

unread,
Aug 10, 1999, 3:00:00 AM8/10/99
to
[Fup zu Marcel Grunauer's Posting vom Tue, 10 Aug 1999 12:38:09 GMT]


> >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/

Martin H. Sluka

unread,
Aug 10, 1999, 3:00:00 AM8/10/99
to
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///

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/>

Michael Panteleit

unread,
Aug 10, 1999, 3:00:00 AM8/10/99
to
Jan Theofel <jthe...@rst-consulting.de> writes:

> 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

unread,
Aug 11, 1999, 3:00:00 AM8/11/99
to
On 10 Aug 1999 23:15:17 GMT, Martin H. Sluka <mar...@sluka.de> wrote:

>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.

0 new messages