FlowHeater Demo Video
 
Der Daten Import / Export Spezialist
 
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Schauen Sie sich auch die verfügbaren allgemeinen Beispiele an evtl. kann Ihre Frage hiermit schon beantwortet werden: Hello World 1 / 2 / 3 , Zahlen in Zeichenketten formatieren , Einfache Wenn-Dann-Sonst Bedingung , Komplexe If-Then-ElseIf ... Bedingung , Daten filtern und gruppieren , Daten gruppieren und Werte über die Gruppierung summieren
  • Seite:
  • 1

THEMA:

String von rechts ab erstem Leerzeichen von links 7 Jahre 3 Monate her #1640

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?

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Marko.

String von rechts ab erstem Leerzeichen von links 7 Jahre 3 Monate her #1641

  • Heinz-Bernd Monschau
  • Heinz-Bernd Monschaus Avatar
  • Offline
  • 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

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Heinz-Bernd Monschau.

String von rechts ab erstem Leerzeichen von links 7 Jahre 3 Monate her #1642

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1664
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.
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von FlowHeater-Team.

String von rechts ab erstem Leerzeichen von links 7 Jahre 3 Monate her #1643

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. :)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

String von rechts ab erstem Leerzeichen von links 3 Wochen 1 Tag her #4337

  • Michael Schaffert
  • Michael Schafferts Avatar
  • Offline
  • Beiträge: 16
Hallo!

Ich habe da noch eine ergänzende Frage zum Thema.
Wie bekommt man es dann mit diesem Skript hin den "String von rechts ab dem 2. Leerzeichen von links" zurück zu geben?

Viele Grüße
Michael

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

String von rechts ab erstem Leerzeichen von links 3 Wochen 23 Stunden her #4338

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1664
Hallo Herr Schaffert,

dann muss anschließend noch die Position des zweiten Leerzeichens gesucht werden, hier das Skript.
public object DoWork()
{
  if (InValues.Length != 1)
    throw new Exception("1 Eingangsparameter erwartet!");    
    
  // 1. Eingangsparameter holen
  string sIN = (string)InValues[0].GetString();

  // Position des ersten Leerzeichens suchen
  int pos1 = sIN.IndexOf(" ");
  if (pos1 >= 0)
  {
    // Position des zweiten Leerzeichens suchen
    int pos2 = sIN.IndexOf(" ", pos1 + 1);
    if (pos2 > pos1)
    {
      // restliche Zeichen von rechts zurückliefern
      return sIN.Substring(pos2 + 1);
    }
  }

  // keine zwei Leerzeichen vorhanden, Eingangsparameter ohne Verarbeitung zurückliefern
  return sIN;
}
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.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

String von rechts ab erstem Leerzeichen von links 3 Wochen 32 Minuten her #4339

  • Michael Schaffert
  • Michael Schafferts Avatar
  • Offline
  • Beiträge: 16
Hallo Herr Stark,

vielen Dank für die schnelle Antwort.
Perfekt. So funktioniert's. Wieder etwas gelernt :-)

Viele Grüße
Michael

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Seite:
  • 1
Ladezeit der Seite: 0.123 Sekunden

andere Sprachen

en

FlowHeater Home

de en

Impressum/Kontakt

Datenschutz

Copyright © 2009-2021 by FlowHeater GmbH.
Alle Rechte vorbehalten.

Follow us on

twitter  facebook

YouTube

 de en