ts-soft hat geschrieben:Hab Deinen Code mal etwas modifiziert, weil Code ohne Variablendeklaration ist eine Fehlerquelle und keine Hilfe.
Des weiteren reicht es, wenn die Anzahl der Worte einmal ermittelt wird und auch das Trim ist nur einmal erforderlich.
Recht hast Du. Und da dies hier die "Tipps & Tricks"-Abteilung ist, würde ich noch einige Kleinigkeiten ändern, um mitlesende
Anfänger nicht auf die Idee zu brigen, sich schlechte Programmier-Angewohnheiten zuzulegen.
Code: Alles auswählen
b$ + Left(UCase(d$), 1) + Right(d$, Len(d$) -1) + Space(1)
Man braucht nicht erst einen kompletten String in Großbuchstaben umzuwandeln, wenn man dann nur das erste Zeichen davon benötigt. Besser: Erst das eine Zeichen abschneiden, und dann nur dieses umwandeln. Statt
Right(d$, Len(d$) -1) schreibt man besser
Mid(d$, 2), und statt 2x " " und 1x Space(1) würde ich eine entspr. Konstante benutzen. Halbwegs sinnvolle Variablennamen sind auch nicht schlecht:
Code: Alles auswählen
EnableExplicit
#Separator$ = " " ; Hier gehört die Konstante hin ...
Procedure.s ProperCase(text$)
; #Separator$ = " " ; ... nicht hierher.
Protected i, count = CountString(text$, #Separator$) + 1
Protected word$, result$ = ""
For i = 1 To count
word$ = StringField(text$, i, #Separator$)
result$ + UCase(Left(word$, 1)) + Mid(word$, 2) + #Separator$
Next
ProcedureReturn RTrim(result$)
EndProcedure
Debug "'" + ProperCase("äpfel birnen kirschen") + "'"
Grüße, Nino