Martin: Vor- und Nachname trennen

Hallo,

Irgendwie komme ich nicht weiter, wer kann mir helfen?

Ich habe eine Variable in der ein Vorname und ein Nachname steht die vorher aus einer Datenbank geholt werden:

"Hans Musterman" oder "Karl-Heinz Mustermann" oder "Hans von Mustermann" oder "Dr. Hans von Mustermann".

Da die Namen von Usern selbst geschrieben wurde, kann es auch zu schreibfehlern kommen oder unnötigen Leerzeilen.

Nun die Frage:

Wie kann ich Vorname bzw. Vornamen vom Nachnamen trennen und in zwei unterschiedlichen Variablen fixieren, also z.B.
"Karl-Heinz" und "Mustermann" oder
"Hans" und "von Mustermann" oder
"Dr. Hans" und "von Mustermann"

Habe schon im Internet gewühlt und weiss keinen Rat mehr!

Martin

  1. Hallo,

    Irgendwie komme ich nicht weiter, wer kann mir helfen?

    Da die Namen von Usern selbst geschrieben wurde, kann es auch zu schreibfehlern kommen oder unnötigen Leerzeilen.

    Nun die Frage:

    Wie kann ich Vorname bzw. Vornamen vom Nachnamen trennen und in zwei unterschiedlichen Variablen fixieren,

    zuverlässig gar nicht...
    denn es gibt ja auch "von und zu", Karl Heinz Müller..
    von ausländischen namen mal ganz abgesehen...
    Könnte auch Müller, Karl Heinz drin stehen?
    es würde aufjedenfall zu komplex, wenn es fast ganz sicher sein soll...

    gruss
    horst

    1. Hallo,

      Irgendwie komme ich nicht weiter, wer kann mir helfen?

      Da die Namen von Usern selbst geschrieben wurde, kann es auch zu schreibfehlern kommen oder unnötigen Leerzeilen.

      Nun die Frage:

      Wie kann ich Vorname bzw. Vornamen vom Nachnamen trennen und in zwei unterschiedlichen Variablen fixieren,

      zuverlässig gar nicht...
      denn es gibt ja auch "von und zu", Karl Heinz Müller..
      von ausländischen namen mal ganz abgesehen...
      Könnte auch Müller, Karl Heinz drin stehen?
      es würde aufjedenfall zu komplex, wenn es fast ganz sicher sein soll...

      gruss
      horst

      Gebe mich auch mit "fast Sicher" zufrieden, da die Datenbank bereits exestiert und ich Sie benutzen muss, das ist mein Auftrag. :-(

      1. Hallo,

        Gebe mich auch mit "fast Sicher" zufrieden, da die Datenbank bereits exestiert und ich Sie benutzen muss, das ist mein Auftrag. :-(

        hmmm der die db erstellt hat sollte das machen!!!
        naja...
        also...
        $teile = wörter durch leerzeichen getrennt,

        wenn es zwei teile sind dann (hier könntest du noch prüfen ob der erste teil mit einem komma schliesst)
         erster teil vorname zweiter teil nachname
        wenn es drei teile sind dann
         wenn teil zwei gleich "von"
           dann erster teil vorname zweiter + dritter teil nachname
        ....
        das ganze dann noch mit dr. prof. jur. dipl. und ähnlichem und den kombinationen daraus...
        ganz ehrlich? _es_geht_nicht_
        oder wird zumindest sehr, sehr viel fleissarbeit

        gruss
        horst

  2. Nun die Frage:

    Wie kann ich Vorname bzw. Vornamen vom Nachnamen trennen und in zwei unterschiedlichen Variablen fixieren, also z.B.
    "Karl-Heinz" und "Mustermann" oder
    "Hans" und "von Mustermann" oder
    "Dr. Hans" und "von Mustermann"

    Woran machst du fest, wo Vorname aufhört und Nachname beginnt? Anhand dessen könntest du dann z.B. split() verwenden.

    1. Nun die Frage:

      Wie kann ich Vorname bzw. Vornamen vom Nachnamen trennen und in zwei unterschiedlichen Variablen fixieren, also z.B.
      "Karl-Heinz" und "Mustermann" oder
      "Hans" und "von Mustermann" oder
      "Dr. Hans" und "von Mustermann"

      Woran machst du fest, wo Vorname aufhört und Nachname beginnt? Anhand dessen könntest du dann z.B. split() verwenden.

      Hab leider nicht die Möglichkeit zu erkennen woran ich etwas "fest" mache. Gebe mich auch mit "fast Sicher" zufrieden, da die Datenbank bereits exestiert und ich Sie benutzen muss, das ist mein Auftrag. :-). Jede Hilfe ist Willkommen

      Gruß
      Martin

      1. Nun die Frage:

        Wie kann ich Vorname bzw. Vornamen vom Nachnamen trennen und in zwei unterschiedlichen Variablen fixieren, also z.B.
        "Karl-Heinz" und "Mustermann" oder
        "Hans" und "von Mustermann" oder
        "Dr. Hans" und "von Mustermann"

        Woran machst du fest, wo Vorname aufhört und Nachname beginnt? Anhand dessen könntest du dann z.B. split() verwenden.

        Denkbar wäre Beispielsweise das letzte Wort als Nachname zu fixieren und wenn ein "von" vor dem letzten Wort steht (o.ä.) das mit rein zu nehmen. Ich bräuchte ein aussagekräftiges Beispiel. Suchoptionen ist leider nicht so meine Stärke. "sorry"

      2. Hallo,

        Hab leider nicht die Möglichkeit zu erkennen woran ich etwas "fest" mache. Gebe mich auch mit "fast Sicher" zufrieden, da die Datenbank bereits exestiert und ich Sie benutzen muss, das ist mein Auftrag. :-).

        Ich denke auch, daß es keinen vernünftigen Weg gibt, das automatisiert zu erkennen. Dazu gibt es einfahc zu viele mögliche Kombinationen.

        imho wäre es sinnvoll, die Tabellenstruktur zu erweitern, und das bestehende Feld manuell in die neuen Felder zu übertragen.
        Eventuell könntest Du  ja für den, sicherlich mehrheitlich vorhandenen, einfachen Fall 'Vorname Nachname' das von einem Script ausführen lassen.
        In einem zweiten Schritt ist dann halt Handarbeit angesagt.

        Programmlogik kann zwar viel abdecken, aber man sollte nicht dneken, daß es für jedes Problem eine sinnvolle Lösung durch einen Algorithmus gibt.

        Grüße
          Klaus

        PS: Es ist nicht sinnvoll, den seleben Text mehrfach zu posten. Wer einen Thread liest, liest normalerweise alle (neuen) Postings, und antwortet da, wo es am sinnvollsten erscheint. Mehrfachpostings verwirren nur.

      3. Woran machst du fest, wo Vorname aufhört und Nachname beginnt? Anhand dessen könntest du dann z.B. split() verwenden.

        Hab leider nicht die Möglichkeit zu erkennen woran ich etwas "fest" mache. Gebe mich auch mit "fast Sicher" zufrieden, da die Datenbank bereits exestiert und ich Sie benutzen muss, das ist mein Auftrag. :-). Jede Hilfe ist Willkommen

        Durchsuche die Datenbank nach dem Muster

        /^\S+\s+\S+$/

        (nicht-Leerraumzeichen, Leerraumzeichen, nicht-Leerraumzeichen) und gucke dir an, was diesem Muster nicht entspricht. Aus den übrigen gilt es, neue Muster zu finden, usw. Irgendwann hast du eine vernachlässigbare Restmenge, die konvertierst du manuell. Wir können dir nicht helfen, solange wir den kompletten Datenbestand nicht kennen (und letzteres wollen wir auch gar nicht).