![]() |
groß/kleinschreibung
hallo leute.
hab ein problem: aus hErMAn mEieR soll Herman Meier gemacht werden. Wie kann man Namen so mit einer delphi-function formatieren? :cry: |
Re: groß/kleinschreibung
Hi, herzlich willkommen!
Das ist etwas unperformant und auf die Schnelle hingecoded, müsste aber gehen:
Delphi-Quellcode:
Nur wenn das tausende Namen sind, die du formatieren musst, würde ich wohl nach einer anderen Lösung suchen. :zwinker:
function CreateCorrectName(MyName: string): string;
var i: Integer; TempName: string; begin TempName := MyName; TempName := LowerCase(TempName); for i := 1 to Length(MyName) do begin if i = 1 then TempName[i] := UpperCase(TempName[i])[1] else if TempName[i - 1] = ' ' then TempName[i] := UpperCase(TempName[i])[1] end; result := TempName; end; Edit: Da war eine Zeile zuviel. ^^ |
Re: groß/kleinschreibung
Du gehst einfach iterativ durch den String durch. Der erste Buchstabe nach einem Leerzeichen (oder der erste buchstabe überhaupt) wird groß, der Rest klein geschrieben.
Delphi-Quellcode:
Var
bFirst : boolean; i : Integer; Begin bFirst := True; // <-- Nachträglich eingefügt For i := 1 to Length (aWord) do Begin If bFirst Then begin aWord[i] := Upc(aWord[i]); bFirst := False; end else aWord[i] := LowerCase(aWord[i]); bFirst := (aWord[i]=' '); End; End; |
Re: groß/kleinschreibung
Kann man nicht ersteinmal alle klein machen und dann über pos(' ')+1 die ersten Buchstaben großmachen? Da sollte doch schneller gehen, oder?
|
Re: groß/kleinschreibung
Hallo,
du lässt eine Schleife von 1 bis length(string) über den String laufen und checkst in dieser Schleife ob du: a) ein Leerzeichen hast, wenn ja wird das nächste Zeichen Großgeschrieben b) kein Leerzeichen hast, dann wird das aktuelle Zeichen, wenn nicht durch a) ein durchlauf vorher "markiert" kleingeschrieben Klein und Großschreibung geht mit uppercase und lowercase mfG Markus
Delphi-Quellcode:
EDIT: @ Nikolai: Oder man machts so wie ich (oder dein Vorredner) und macht alles klein, was nicht groß werden soll
function correctName(str : string):string;
var up : boolean; var i : integer; begin up := false; str[1] := uppercase(str[1]); for i := 2 to length(str) do begin if str[i] <> ' ' then begin if up then str[i] := uppercase(str[i) else str[i] := lowercase(str[i]); up := false; end else begin up := true; end; end; result := str; end; Ups, ich stelle gerade fest, dass der Code meines VorVorrednera eigentlich identisch mit meinem ist ... Pech gehabt ^^ |
Re: groß/kleinschreibung
Zitat:
|
Re: groß/kleinschreibung
Zitat:
Aber kann ich selbstverständlich irren. |
Re: groß/kleinschreibung
Sagt mal, geht das nur mir so, oder fehlt in alzaimars Code trotz der Deklaration als "Delphi-Code" das Syntaxhighlighting? :gruebel:
|
Re: groß/kleinschreibung
Zitat:
|
Re: groß/kleinschreibung
ich würde sagen, dass bei dem code das highlightening fehlt, weil dort die begriffe, die normalerweise ge-highlightet werden alle groß geschrieben sind und es deswegen nicht werden.
Flare |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz