AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

groß/kleinschreibung

Ein Thema von m.p.h. · begonnen am 25. Feb 2006 · letzter Beitrag vom 22. Mai 2006
Antwort Antwort
Seite 1 von 3  1 23      
m.p.h.

Registriert seit: 22. Feb 2006
7 Beiträge
 
#1

groß/kleinschreibung

  Alt 25. Feb 2006, 21:36
hallo leute.
hab ein problem:

aus
hErMAn mEieR

soll
Herman Meier gemacht werden.
Wie kann man Namen so mit einer delphi-function formatieren?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: groß/kleinschreibung

  Alt 25. Feb 2006, 21:48
Hi, herzlich willkommen!

Das ist etwas unperformant und auf die Schnelle hingecoded, müsste aber gehen:

Delphi-Quellcode:
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;
Nur wenn das tausende Namen sind, die du formatieren musst, würde ich wohl nach einer anderen Lösung suchen.


Edit: Da war eine Zeile zuviel. ^^
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: groß/kleinschreibung

  Alt 25. Feb 2006, 21:50
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;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: groß/kleinschreibung

  Alt 25. Feb 2006, 21:55
Kann man nicht ersteinmal alle klein machen und dann über pos(' ')+1 die ersten Buchstaben großmachen? Da sollte doch schneller gehen, oder?
  Mit Zitat antworten Zitat
markusj

Registriert seit: 9. Dez 2005
Ort: Kandel
408 Beiträge
 
#5

Re: groß/kleinschreibung

  Alt 25. Feb 2006, 22:03
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:
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;
EDIT: @ Nikolai: Oder man machts so wie ich (oder dein Vorredner) und macht alles klein, was nicht groß werden soll
Ups, ich stelle gerade fest, dass der Code meines VorVorrednera eigentlich identisch mit meinem ist ... Pech gehabt ^^
Markus
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: groß/kleinschreibung

  Alt 25. Feb 2006, 22:10
Zitat von Nicolai1605:
Kann man nicht ersteinmal alle klein machen und dann über pos(' ')+1 die ersten Buchstaben großmachen? Da sollte doch schneller gehen, oder?
Nein, denn dann gehst du den String 2x durch. So, wie markusj und ich es vorgeschlagen haben, ist es optimal schnell (zumindest vom Verfahren). Ein paar Prozentchen dürfte man noch mit ASM rauskitzeln. Vielleicht.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: groß/kleinschreibung

  Alt 25. Feb 2006, 22:17
Zitat von alzaimar:
Nein, denn dann gehst du den String 2x durch. So, wie markusj und ich es vorgeschlagen haben, ist es optimal schnell (zumindest vom Verfahren).
Sicher? Ich denke, mein Verfahren ist etwas schneller, da LowerCase bei mir nur ein einziges Mal aufgerufen wird und nicht für jeden Buchstaben, der klein zu schreiben ist.

Aber kann ich selbstverständlich irren.
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#8

Re: groß/kleinschreibung

  Alt 25. Feb 2006, 22:17
Sagt mal, geht das nur mir so, oder fehlt in alzaimars Code trotz der Deklaration als "Delphi-Code" das Syntaxhighlighting?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: groß/kleinschreibung

  Alt 25. Feb 2006, 22:18
Zitat von Daniel G:
Sagt mal, geht das nur mir so, oder fehlt in alzaimars Code trotz der Deklaration als "Delphi-Code" das Syntaxhighlighting?
Geht mir ebenfalls so, da muss ein kleiner Bug im Caching-/Parsing-System o.ä. vorliegen. Den genauen Fehler konnte Daniel imho noch nicht entdecken.
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#10

Re: groß/kleinschreibung

  Alt 25. Feb 2006, 22:25
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
Willy Scheibel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz