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: Groß- Kleinschreibung in Namen

Groß- Kleinschreibung in Namen 5 Jahre 2 Monate her #651

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

ich weis nicht ob es eine einfachere Lösung gibt, ich habe aber die Umwandlung einer Zeichenkette wie "JEAN-MARC BARROIS DE ROTHSCHILD" in "Jean-Marc Barrrois de Rothschild" folgendermaßen gelöst:

Public Function DoWork() As Object

Dim myname As String
myname = InValues(0).getstring
Dim i As Integer

Dim neuer_name As String = Nothing
Dim ganzer_name As String = Nothing
Dim anfang As String
Dim ende As String
Dim strteile() As String


'Wenn der Name kein Leerzeichen enthält, den ersten Buchstaben großschreiben, die weiteren klein
If myname.IndexOf(" ") = -1 Then
anfang = InValues(0).getstring.substring(0, 1).toupper()
ende = InValues(0).getstring.substring(1, InValues(0).getstring.length - 1).tolower()
neuer_name = anfang + ende
dowork = neuer_name.trim

'wenn der Name ein Leerzeichen enthält, dann den Namen anhand der Leerzeichen in seine Bestandteile aufsplitten und mit diesen Teilen ein Array füllen
' (strteile = myname.Split(" "))
'für jedes dieser teile prüfen ob es sich dabei um die Vorsilben de oder da handelt, die in holländischen oder spanischen Namen oft verwendet werden.
'Diese Vorsilben werden kleingeschrieben, der erste Buchstabe darf also nicht in Großbuchstaben gewandelt werden
Else
' strteile = myname.Split(" ")
strteile = myname.Split(New String() {" ", "-"}, Nothing)

For i = 0 To strteile.Length - 1
If strteile(i).ToString() = "DE" Then
anfang = strteile(i).ToString().Substring(0, 1).tolower
ElseIf strteile(i).ToString() = "DA" Then
anfang = strteile(i).ToString().Substring(0, 1).tolower

'handelt es sich beim aktuellen Teilstring nicht um die Vorsilben de oder da, dann wieder den ersten Buchstaben großschreiben, die weiteren klein
Else

anfang = strteile(i).ToString().Substring(0, 1).ToUpper()
End If
ende = strteile(i).ToString().Substring(1, strteile(i).ToString().Length - 1).ToLower

neuer_name = anfang + ende
ganzer_name = ganzer_name + " " + neuer_name

Next
dowork = ganzer_name.trim
End If

End Function
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Groß- Kleinschreibung in Namen 5 Jahre 2 Monate her #652

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1101
Hallo Herr Monschau,

ich habe Ihren Lösungsvorschlag aufgegriffen und eine ältere Lösung von mir/einem Forumsbeitrag etwas aufgebohrt. Diese Lösung berücksichtigte damals noch keine Namenszusätze.

Hier der damalige Forumsbeitrag: Anfangsbuchstaben als Großbuchstaben
public object DoWork()
{
  object o = InValues[0].GetString();

  if (o == null)
    return o;

  string s = (string)o;

  // hier evtl. weitere Wort Trennzeichen angeben
  char [] delimiters = {' ', '-' };

  // hier evtl. weitere Worte eintragen die immer kleingeschrieben werden sollen
  string [] tolower = {	" von ",
                        " und ",
                        " zu " };
  int iToUpperIndex = 0;

  string sRet = "";

  for(int i = 0; i < s.Length; i++)
  {
    bool bIgnoreDelimiters = false;

    foreach(string stopword in tolower)
    {
      if (i + stopword.Length > s.Length)
        continue;

      string sCmp = s.Substring(i, stopword.Length).ToLower();
      if (sCmp == stopword)
      {
        bIgnoreDelimiters = true;
        break;
      }
    }

    if (bIgnoreDelimiters == false) // nur prüfen falls kein Stop Wort
    {
      foreach(char a in delimiters)
      {
        if (s[i] == a)
        {
          iToUpperIndex = i + 1; // nächste Zeichen in Großbuchstaben
          break;
        }
      }
    }

    if (iToUpperIndex == i)
      sRet += s[i].ToString().ToUpper();
    else
      sRet += s[i].ToString().ToLower();
  }

  return sRet;
}
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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.079 Sekunden