Seite 2 von 3
Re: ProperCase in Strings
Verfasst: 18.05.2012 16:43
von Nino
OK, dann z.B. so:
Code: Alles auswählen
EnableExplicit
#Separator$ = " "
Procedure.s ProperCase(text$)
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)
If i < count
result$ + #Separator$
EndIf
Next
ProcedureReturn result$
EndProcedure
Debug "'" + ProperCase("äpfel birnen kirschen") + "'"
Debug "'" + ProperCase(" äpfel birnen kirschen ") + "'"
Re: ProperCase in Strings
Verfasst: 18.05.2012 17:06
von 7x7
Also wenn wir schon am Rumklugscheissen sind: Variablennamen wie "i", "I", "l", "L" usw. sollten
tunlichst wegen Verwechslungsgefahr vermieden werden. Dieser Quatsch stammt -weshalb auch
immer- aus den Urzeiten der Programmierung. Und wegen der besseren Lesbarkeit gehört zum "Next"
auch immer die Schleifenvariable, auch wenn der Compiler ohne damit zurecht kommt.
So, neuer Code:
Code: Alles auswählen
EnableExplicit
#Separator$ = " "
Procedure.s ProperCase(text$)
Protected a, count = CountString(text$, #Separator$) + 1
Protected word$, result$ = ""
For a = 1 To count
word$ = StringField(text$, a, #Separator$)
result$ + UCase(Left(word$, 1)) + Mid(word$, 2)
If a < count
result$ + #Separator$
EndIf
Next a
ProcedureReturn result$
EndProcedure
Debug "'" + ProperCase("äpfel birnen kirschen") + "'"
Debug "'" + ProperCase(" äpfel birnen kirschen ") + "'"
Bin ich jetzt Sieger dieses Wettbewerbs?

Re: ProperCase in Strings
Verfasst: 18.05.2012 17:24
von ts-soft
7x7 hat geschrieben:Also wenn wir schon am Rumklugscheissen sind: Variablennamen wie "i", "I", "l", "L" usw. sollten
tunlichst wegen Verwechslungsgefahr vermieden werden. ...
...
Bin ich jetzt Sieger dieses Wettbewerbs?

Nein, weil es gibt auch den Variablentyp .a!
For i ist allgemein üblich und sollte im Kontext mit For auch zu keinerlei Verwechslungen führen.
Aber sprechende Variablennamen sind natürlich vorzuziehen!
Re: ProperCase in Strings
Verfasst: 18.05.2012 19:32
von Nino
7x7 hat geschrieben:Variablennamen wie "i", "I", "l", "L" usw. sollten
tunlichst wegen Verwechslungsgefahr vermieden werden. Dieser Quatsch stammt -weshalb auch
immer- aus den Urzeiten der Programmierung.
Da hast du wohl etwas falsch verstanden. "i" und "L" gehören nicht zu der Aufzählung, denn wenn man die nicht unterscheiden kann, sollte man sich besser einen Termin beim Augenarzt besorgen.
7x7 hat geschrieben: Und wegen der besseren Lesbarkeit gehört zum "Next"
auch immer die Schleifenvariable, auch wenn der Compiler ohne damit zurecht kommt.
Die Lesbarkeitb wird dadurch höchstens verbessert, wenn es sich um mehrere verschachtelte For/Next-Schleifen handelt.
ts-soft hat geschrieben:For i ist allgemein üblich
Ja, und das "i" steht hier für "index".
Re: ProperCase in Strings
Verfasst: 18.05.2012 19:51
von ts-soft
Nino hat geschrieben:Ja, und das "i" steht hier für "index".
Und ich dachte immer für Item

Re: ProperCase in Strings
Verfasst: 18.05.2012 23:03
von Derren
Und wofür steht dann das k bei StringField?
Also diese Funktion sollte man vielleicht nicht ProperCase nennen. CamelCase mit Leerzeichen vielleicht...
Unter ProperCase habe ich mir jetzt eine Funktion vorgestellt, die Buchstaben nach entsprechenden Satzzeichen groß schreibt (wie man es vom Handy kennt).
Re: ProperCase in Strings
Verfasst: 19.05.2012 09:03
von MikeLGS
tut mir wirklich leid, wenn ich hier eine Welle der Programmier-Empörung ausgelöst habe. Für mich ist der Code einfach, schnell und auch für Laien gut zu verstehen. Man kann sich ja auch im Programmieren verlieren und es so, so oder so machen und am Ende sieht man den Wald vor lauter Bäumen nicht.
Bei mir funzt er auch mit Umlauten.
Zu Nino:
mit Left(UCase(d$),1) wird ja der erste Buchstabe abgeschnitten
trotzdem vielen Dank an alle für die Anregungen.
man kann ja den Code in ein anderes Thema verschieben.
MfG Mike
Re: ProperCase in Strings
Verfasst: 19.05.2012 09:17
von Nino
MikeLGS hat geschrieben:tut mir wirklich leid, wenn ich hier eine Welle der Programmier-Empörung ausgelöst habe.
Von "Empörung" habe ich hier nirgendwo etwas gelesen ...
MikeLGS hat geschrieben:Zu Nino:
mit Left(UCase(d$),1) wird ja der erste Buchstabe abgeschnitten

Ja und? Das habe ich auch nicht bestritten. Vielleicht liest du einfach mal
genau was ich geschrieben habe, wenn das nicht zu viel verlangt ist

Re: ProperCase in Strings
Verfasst: 19.05.2012 10:39
von mk-soft
Das mit den Pointer gedöns finde ich noch am besten. Für mich ist es logisch mit Pointern zu arbeiten.

Re: ProperCase in Strings
Verfasst: 19.05.2012 12:21
von MikeLGS
noch mal's Entschuldigung.
Nino: meine Augen sind nicht mehr die Besten.
ich arbeite auch mit Pointern.

wo's angebracht ist. Und das schon seit zwanzig Jahren (VB,Java,C++ und seit der Herausgabe auch mit PureBasic)
Verzeiht mir, dass ich in meinem Programmiererleben einige Dinge für unzweckmäßig erachte. Z.B. ellenlanger Code.
Das kann jeder für sich entscheiden denke ich.
LG Mike