Zum Hauptinhalt springen
Weil einfach - produktiver ist

Der Daten Spezialist

Konvertieren Sie die Daten mühelos zwischen verschiedenen Formaten ohne Programmierkenntnisse dank Visual Designer. Effizient und super einfach.
Flowheater Chart

Groß- Kleinschreibung in Namen

  • Heinz-Bernd Monschau
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
13 Jahre 2 Monate her #651 von Heinz-Bernd Monschau
Groß- Kleinschreibung in Namen wurde erstellt von Heinz-Bernd Monschau
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

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
13 Jahre 2 Monate her #652 von FlowHeater-Team
FlowHeater-Team antwortete auf Aw: Groß- Kleinschreibung in Namen
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
Code:
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.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.259 Sekunden
FlowHeater Logo

FlowHeater - Der Daten Spezialist

Effiziente Datenintegration und Transformation mit FlowHeater - Ihre Lösung für nahtlosen Datentransfer.

Rechtliches

Support & Kontakt

Kontaktinformation

Telefon:
0951 / 99339792

E-Mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


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