Este reto me gustó. Propongo una nueva variante:
Código Delphi
[-]function TForm1.Capitalize(Text: string): string;
var Aux, Capital: string;
begin
Capital := AnsiUpperCase(Text[1]);
Aux := AnsiLowerCase(Text);
Aux[1] := Capital[1];
result := Aux;
end;
function TForm1.CapitalizeAll(Text: string): string;
var i: integer;
CopyText: string;
CapitalizeText: string;
begin
for i := 1 to Length(Text) do
begin
if (Text[i] <> ' ') or (i = Length(Text))
then CopyText := CopyText + Text[i]
else begin
CapitalizeText := CapitalizeText + ' ' + Capitalize(CopyText);
CopyText := '';
end;
end;
result := CapitalizeText + ' ' + Capitalize(Copytext);
end;
En teoría debería funcionar con cualquier caracter que se venga...
Saludos,