- Beiträge: 63
Groß- Kleinschreibung in Namen
- Heinz-Bernd Monschau
- Autor
- Offline
- Benutzer
Weniger
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
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.
- FlowHeater-Team
- Offline
- Administrator
13 Jahre 2 Monate her #652
von FlowHeater-Team
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.
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
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