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