String mit Buchstaben/Zahlen splitten?

08/07/2014 - 11:53 von Astrid | Report spam
Hallo zusammen,

habe einen String, der
aus einer beliebigen (von Null
verschiedenen) Anzahl aus Buchstaben
besteht, gefolgt von einer anderen
beliebigen (von Null verschiedenen) Anzahl
von Ziffern.
Also z.B.
a9
bhqie6823
c7810
tagtopy0
Ich moechte auf $teil1 den Buchstabenteil
erhalten und auf $teil2 den Zahlenteil.

Wie kann man das bewerkstelligen, ohne,
dass man vorher weiss, wieviele Buchstaben/Ziffern
dabei sind?

Gruss, Astrid
 

Lesen sie die antworten

#1 Christian Garbs
09/07/2014 - 00:38 | Warnen spam
Mahlzeit!

Astrid wrote:

habe einen String, der aus einer beliebigen (von Null verschiedenen)
Anzahl aus Buchstaben besteht, gefolgt von einer anderen beliebigen
(von Null verschiedenen) Anzahl von Ziffern.

Also z.B.
a9
bhqie6823
c7810
tagtopy0
Ich moechte auf $teil1 den Buchstabenteil
erhalten und auf $teil2 den Zahlenteil.



Das geht wohl am einfachsten mit einem regulàren Ausdruck. Du hast
Deine Bedingungen dafür schon genau passend formuliert, wenn man
Deinen ersten Absatz 'übersetzt', kommt sowas raus:

([[:alpha:]]+)(\d+)


Das làsst sich dann so umsetzen:




#!/usr/bin/perl -w
use strict;

while (my $line = <DATA>)
{
if ($line =~ /([[:alpha:]]+)(\d+)/)
{
my ($teil1, $teil2) = ($1, $2);
print "$teil1 - $teil2";
}
}

__DATA__
a9
bhqie6823
c7810
tagtopy0




Gruß
Christian

PS: X-Post & F'up2 de.comp.lang.perl
(die Nachfolgegruppe von de.comp.lang.perl.misc)
sub _{print""}_;for(;$s<9;++$s){$_='1E2018201E00001E2018201E00001E2018201'
.'E002020001C2222221400005CA2A2A27C02001C2222221C20003E040202201F2422221C00'
.'242A2A2A12002020001C2222221F20001C2A2A2A0C';while(s;(..);;){printf'%c',hex
$1&1<<$s?40:32}_}$_=':::Christian Garbs:',y;:;\t;;print;_;_

Ähnliche fragen