Steve: String aufteilen

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

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

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

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
  3. 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

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
  4. 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

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

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

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

        http://www.domain.de/

        Viele Grüße,
        Christian

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

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