Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.

THEMA: String von rechts ab erstem Leerzeichen von links

String von rechts ab erstem Leerzeichen von links 2 Jahre 8 Monate her #1640

  • Marko
  • Markos Avatar
  • Offline
  • Senior Member
  • Beiträge: 70
Hallo Forum

Ich habe eine Spalte in einer Tabelle die folgenden Namensvariationen beinhaltet und möchte den Nachnamen separieren.

Max Mustermann
Max Mustermann Schmidt
Maria-Magdalena Schmidt Meier

Gewünschtes Ergebnis:

Mustermann
Mustermann Schmidt
Schmidt Meier

Besonderheit: Der Nachname kann aus mehreren Wörtern bestehen die auch durch ein Leerzeichen getrennt sind. Komme mit Split und Subtring leider nicht zum Erfolg.

Habt ihr hierzu einen Lösungsansatz?
Letzte Änderung: 2 Jahre 8 Monate her von Marko.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

String von rechts ab erstem Leerzeichen von links 2 Jahre 8 Monate her #1641

  • Heinz-Bernd Monschau
  • Heinz-Bernd Monschaus Avatar
  • Offline
  • Senior Member
  • Beiträge: 63
Hallo,

wahrscheinlichh geht es einfacher, ich würde das in Unkenntnis der richtigen Lösung aber wieder mit einem .Net-Heater machen.

Sprache:VB.net
Eingangsparameter: Die Namensspalte

Public Function DoWork() As Object

'Den vollen Namen in Variable einlesen
dim strVollerName as string=invalues(0).getvalue()

'Den Namen anhand des Leerzeichens in eine Arrayvariable aufspliiten
dim strSplittet as string()=strVollerName.Split(New Char() {" "c})

'Anzahl der Namensteile zählen
dim intAnzahl as integer=strsplittet.length
dim strName as string
dim x as integer

select case intanzahl
'Wenn der Namen zwei Teile lang ist, dann ist der zweite Teil der Nachname
case 2
strname=strSplittet(1)

'Wenn der Name größer als zwei Teile ist, damn ist der Nachname die 'Verkettung aller Teile im array ab Position 2
case >2
strname= strsplittet(1)
for x=2 to intAnzahl-1
strname= strname & " " & strsplittet(x)
next
end select
dowork=strname

end function
Letzte Änderung: 2 Jahre 8 Monate her von Heinz-Bernd Monschau.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

String von rechts ab erstem Leerzeichen von links 2 Jahre 8 Monate her #1642

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Hallo,

das geht z.Zt. nur vernünftig mit dem .NET Script Heater. Allerdings ist Vornamen/Nachnamen Erkennung eine Wissenschaft für sich, eine 100%ige Lösung wird es nicht geben.

Ich habe jetzt mal ein Script erstellt das nach der Anforderung alle Zeichen ab dem ersten Leerzeichen zurückliefert.
So werden aber z.B. Namen wie Klaus Maria Mustermann Schmitt nicht richtig erkannt! Das ist ebenfalls bei der Lösung von Herrn Monschau der Fall.

C# Skript zum extrahieren von Vornamen/Nachnamen, Beispiel siehe Anhang
public object DoWork()
{
  if (InValues.Length != 1)
    throw new Exception("ein Eingangsparameter erwartet");

  // 1. Eingangsparameter holen
  string IN = (string)InValues[0].GetString();

  // prüfen ob ein Leerzeichen vorkommt
  int pos = IN.IndexOf(" ");
  if (pos >= 0)
  {
    // Wenn ja dann den Rest zurückliefern
    return IN.Substring(pos + 1);
  }

  // keine Leerzeichen vorhanden, Eingangsparameter ohne Verarbeitung zurückliefern
  return IN;
}

Dateianhang:

Dateiname: string-ver...ript.zip
Dateigröße:2 KB
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Letzte Änderung: 2 Jahre 8 Monate her von FlowHeater-Team.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

String von rechts ab erstem Leerzeichen von links 2 Jahre 8 Monate her #1643

  • Marko
  • Markos Avatar
  • Offline
  • Senior Member
  • Beiträge: 70
Vielen Dank Herr Monschau und Herr Stark. Ich finde den 2.ten Lösungsansatz besser und falls es doch einen Doppel-Vornamen mit Leerzeichen :blink: gibt, kann man sich mit dem Replace Heater behelfen. :)
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.081 Sekunden