Home » Tipps & Tricks » Object Pascal » Strings » Jedes Wort mit einem Großbuchstaben beginnen

Jedes Wort mit einem Großbuchstaben beginnen

Die Funktion MixedCase konvertiert einen String so, dass jedes Wort mit einem Großbuchstaben beginnt.

function MixedCase(SourceStr: String): String;
var
  aPChar1: PChar;
  newPChar: PChar;
begin
  aPChar1:= StrAlloc(Length(SourceStr)+1);
  try
    StrPCopy(aPChar1,SourceStr);
    newPChar:= StrMixedCase(aPChar1);
    Result:= StrPas(newPChar);
  finally
    StrDispose(aPChar1);
  end;
end;

function StrMixedCase(SourceStr: PChar): PChar;
var
  I: Word;
  SourcePos: PChar;
  CharStr: String[1];
  NextBig: Boolean;
begin
  if StrLen(SourceStr) > 1 then 
  begin
    SourcePos := SourceStr;
    NextBig := True;
    for i := 1 To StrLen(SourceStr) do 
    begin
      CharStr[1] := SourcePos^;
      if NextBig then
        CharStr := UpperCase(CharStr)
      else 
        CharStr := LowerCase(CharStr);
      SourcePos^:= CharStr[1];

      NextBig := (SourcePos^ in [' ','.','!','?','-',';',',',#13]);
      Inc(SourcePos);
    end;
  end;
  Result := SourceStr;
end;