String aufteilen
Steve
- perl
0 alligator0 Tobias Kloth0 MudGuard0 alligator0 Christian Seiler0 Steve
Hallo,
ich möchte aus dem String "vorname.nachname@domain.de" den Vornamen und den Nachnamen extrahieren und Variablen zuweisen.
Ich habe folgenden Lösungsansatz:
my @name;
@name = split(/./, "vorname.nachname@domain.de");
print "$name[0] , $name[1]}";
Leider sind die Vars leer! Und wie bekomme ich "@domain.de" weg?
Nochmals SPLIT anwenden?
Weiss jemand eine Lösung?
Danke,
Steve
@name = split(/./, "vorname.nachname@domain.de");
print "$name[0] , $name[1]}";
Hi,
Quoting ist dein Freund :o)
Probier mal: @name = split(/./, "vorname.nachname@domain.de");
So long ..
alligator
Hallo Steve,
@name = split(/./, "vorname.nachname@domain.de");
ich kenn mich in perl nicht aus, aber in php verwendet split() einen regulären Ausdruck - und in diesem hat der Punkt eine besondere Bedeutung und muss also maskiert werden.
Und wie bekomme ich "@domain.de" weg?
Nochmals SPLIT anwenden?
ich würde sagen, ja - aber ich würde das erst machen.
Grüße aus Nürnberg
Tobias
Hi,
ich möchte aus dem String "vorname.nachname@domain.de" den Vornamen und den Nachnamen extrahieren und Variablen zuweisen.
Ich habe folgenden Lösungsansatz:
my @name;
@name = split(/./, "vorname.nachname@domain.de");
print "$name[0] , $name[1]}";
. steht für ein beliebiges Zeichen in RegEx.
Leider sind die Vars leer! Und wie bekomme ich "@domain.de" weg?
Nochmals SPLIT anwenden?
Nein, geht auch mit einem Split. Zeichenklassen verwenden!
z.B. /[.@]/
cu,
Andreas
Hook nochmal,
ich hab grad übersehen dass du bei vorname.nachname@domain.de,
dass @ auch quoten solltest ...
Ich schlage die folgendes vor:
"vorname.nachname@domain.de" =~ /(.*?).(.*?)@.*/;
print "Vorname: $1\nNachname: $2";
cya
alligator
Hallo Steve,
@name = split(/./, "vorname.nachname@domain.de");
split erwartet einen regulären Ausdruck.
Leider sind die Vars leer! Und wie bekomme ich "@domain.de" weg?
Nochmals SPLIT anwenden?
Mach es doch so:
my $email = "vorname.nachname@domain.de";
if ($email =~ /^([^.]+).([^@]+)@(.*)$/) {
$vorname = $1;
$nachname = $2;
$domain = $3;
} else {
# format stimmt nicht
}
Viele Grüße,
Christian
PS: Du arbeitest bei Sedo?
Hi Christian,
es klappt! Diese Coder ist aber ganz schön schwer zu lesen. Voher muss ich nun halt @ durch @ im String ersetzen.
Oder 2 x Split (mit Quoting) anwenden.
my $email = "vorname.nachname@domain.de";
if ($email =~ /^([^.]+).([^@]+)@(.*)$/) {
$vorname = $1;
$nachname = $2;
$domain = $3;
} else {
# format stimmt nicht
}
PS: Du arbeitest bei Sedo?
Wie soli ich das verstehen?
An alle anderern: Danke für die Hilfe!!
Bye,
Steve
Hallo Steve,
my $email = "vorname.nachname@domain.de";
if ($email =~ /^([^.]+).([^@]+)@(.*)$/) {
$vorname = $1;
$nachname = $2;
$domain = $3;
} else {
# format stimmt nicht
}
Das ist aber inzwischen klar, oder?
PS: Du arbeitest bei Sedo?
Wie soli ich das verstehen?
Viele Grüße,
Christian
Hi Christian,
ich muss gestehen die Anweisung
if ($email =~ /^([^.]+).([^@]+)@(.*)$/)
ist mir nicht ganz klar :-(
Ich habe jetzt die Routine mit 2x Split formuliert.
Bye,
Steve
Hallo Steve,
ich muss gestehen die Anweisung
if ($email =~ /^([^.]+).([^@]+)@(.*)$/)
ist mir nicht ganz klar :-(
In SELFHTML ist das eigentlich ganz gut beschrieben: http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm Wenn es Dir nach dem Lesen der Seite immer noch unklar ist, frag nach.
Ich habe jetzt die Routine mit 2x Split formuliert.
Das läuft - wenn das Format immer das gleiche ist - auf dasselbe hinaus.
Viele Grüße,
Christian