string trennen
steffi
- perl
Hi,
habe ein problem und komme einfach nicht drauf, auch mit regex und stringfunktionen konnte ihc nichts anfangen!
ich habe einen string wie "hansmeier", den ich trennen möchte, damit ich vorname und nachname einzeln habe, wobei mir der vorname "hans" bekannt ist. also irgendwie den string nach dem ersten vorkommen von string "hans" trennen und beide teile ausgeben.
hat jemand ne idee dafür?
danke steffi
Hallo,
ich habe einen string wie "hansmeier", den ich trennen möchte, damit ich vorname und nachname einzeln habe, wobei mir der vorname "hans" bekannt ist. also irgendwie den string nach dem ersten vorkommen von string "hans" trennen und beide teile ausgeben.
Ich versuchs mal mit RegEx, die Funktionen zur Stringverarbeitung hab ich nicht im Kopf:
$string = 'hansmeier';
$vorname = 'hans';
$nachname = (($string =~ /^$vorname(.+)$/) ? $1 : '');
Ist ungetestet, sollte aber denke ich funktionieren. Und wahrscheinlich geht es auch mit weniger Klammern.
Viele Grüße,
Stefan
Hi,
ich habe einen string wie "hansmeier", den ich trennen möchte, damit ich vorname und nachname einzeln habe, wobei mir der vorname "hans" bekannt ist. also irgendwie den string nach dem ersten vorkommen von string "hans" trennen und beide teile ausgeben.
Wenn der Vorname bekannt ist, ist auch dessen Länge (length) bekannt.
Also ist auch die Trennstelle bekannt.
Die Auftrennung kann also durch die substr-Funktion auf einfachste Weise erfolgen.
cu,
Andreas
Hi,
habe ein problem und komme einfach nicht drauf, auch mit regex und stringfunktionen konnte ihc nichts anfangen!
ich habe einen string wie "hansmeier", den ich trennen möchte, damit ich vorname und nachname einzeln habe, wobei mir der vorname "hans" bekannt ist. also irgendwie den string nach dem ersten vorkommen von string "hans" trennen und beide teile ausgeben.
my $name = 'hans';
my $string = 'hansmeier';
$string =~ /($name)(.*)/i;
print ucfirst $1 . ' ' . ucfirst $2;
Hi,
$string =~ /($name)(.*)/i;
print ucfirst $1 . ' ' . ucfirst $2;
Ich würde noch Hütchensymbol und Dollarzeichen verwenden (wie von Stefan vorgeschlagen), ansonsten käme bei "derhansmeierausdortmund" "Hans Meierausdortmund" raus. Außerdem würde der Reguläre Ausdruck ungeeignet sein, um die Struktur an sich zu prüfen (so sie denn mitgeprüft werden soll).
Viele Grüße
Torsten
Hi,
Autsch, zu schnell abgeschickt:
Ich würde noch Hütchensymbol und Dollarzeichen verwenden (wie von Stefan vorgeschlagen), ansonsten käme bei "derhansmeierausdortmund" "Hans Meierausdortmund" raus.
Kommt es mit oder ohne Dollarzeichen.
Nix für ungut
Torsten
Moin, moin!
Mal angenommen, der zusammengesetzte Name steht in $name und der Vorname, der Dir ja bekannt ist, wird in $vorname gespeichert. Dann brauchst Du nur noch den zusammengesetzten Namen in die Variable $nachname zu übernehmen und daraus am Anfang (^) den Vornamen zu beseitigen, indem Du den Variableninhalt mit dem Teil nach dem Vornamen (der Teil, der im Codebeispiel durch den geklammerten Ausdruck in $1 zwischengespeichert wird) überschreibst.
$name="hansmeier";
$vorname="hans";
($nachname=$name)=~s/^$vorname(.*)/$1/;
print $nachname;
Alles klar?
Norbert