Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Primea Letra En Mayúscula (https://www.clubdelphi.com/foros/showthread.php?t=26679)

Tangela 31-10-2005 12:07:19

Primea Letra En Mayúscula
 
Hola a todos:
Pues lo que necesitaría es una rutina que me permita poner en mayúscula la primera letra de cada palabra de un string dado que está en minúsculas.

Y de paso, ¿alguien sabe como conseguir que al pasar de mayúsculas a minúsculas con la funcion LowerCase() se conviertan también las Ñ y los Ó,Á, etc...?

dec 31-10-2005 12:20:33

Hola,

A ver si este par de funciones te apañan:

Código Delphi [-]
{ ············································································ }
 
 function Capitalizar(const cadena: string): string;
 var
   s: string;
   i: integer;
   b: boolean;
 begin
   s := '';
   b := true;
   for i := 1 to Length(cadena) do
   begin
     if b then
       s := s + AnsiUpperCase(cadena[i])
     else
       s := s + cadena[i];
     b := (cadena[i] = ' ');
   end;
   Result := s;
 end;
 
 { ············································································ }
 
 function CapitalizarFrase(const frase: string) : string;
 var
   i: integer;
   up: boolean;
 begin
   up := true;
   Result := frase;
   for i := 1 to Length(frase) do
   begin
     if up then
       Result := Result + AnsiUpperCase(frase[i])
     else
       Result := Result + AnsiLowerCase(frase[i]);
     up := frase[i] = ' ';
     if up and (Length(frase) >= (i + 2)) and
       (frase[i+2] = ' ') then up := false;
   end;
 end;
 
 { ············································································ }

Delfino 31-10-2005 12:43:45

Yo lo hago con la funcion StuffString de la unidad StrUtils :

Código:

StuffString(s,1,1,UpperCase(LeftStr(s,1)));

Tangela 01-11-2005 00:20:11

Funciona, gracias
 
Código Delphi [-]
 
{ ············································································ }
 
 function CapitalizarFrase(const frase: string) : string;
 var
   i: integer;
   up: boolean;
 begin
   up := true;
   Result := frase;
   for i := 1 to Length(frase) do
   begin
     if up then
       Result := Result + AnsiUpperCase(frase[i])
     else
       Result := Result + AnsiLowerCase(frase[i]);
     up := frase[i] = ' ';
     if up and (Length(frase) >= (i + 2)) and
       (frase[i+2] = ' ') then up := false;
   end;
 end;
 
 { ············································································ }

Muchas gracias, es justo lo que necesitaba. Unicamente he tenido que hacer la siguiente modificación para que funcione perfecto:
en lugar de
Código Delphi [-]
Result := frase;
Puse:
Código Delphi [-]
Result := '';
porque de lo contrario el resultado de la función era la frase original más la frase capitalizada: por ejemplo: la frase originalLa Frase Capitalizada

Gracias, muchas gracias

yusnerqui 01-11-2005 19:36:57

Bueno ya el caso está resuelto, pero aporto otra solución para la base de datos de los foros haciendo uso de los TStrings.
Código Delphi [-]
function AsTitulo(Frase:String):String;
Var
  Lista : TStrings;
  i : integer;
  Temp : String;
begin
  Lista := TStringList.Create;
  Lista.Delimiter := ' ';
  Lista.DelimitedText := Frase;
  for i := 0 to Lista.Count - 1 do
  begin
    Temp := LowerCase(Lista[i]);
    Temp[1]:= UpCase(Temp[1]);
    Lista[i] := Temp;
  end;
  Result := Lista.DelimitedText;
  Lista.Free;
end;

Saludos;)

dec 02-11-2005 06:34:19

Hola,


Cita:

Empezado por Tangela
Muchas gracias, es justo lo que necesitaba. Unicamente he tenido que hacer la siguiente modificación para que funcione perfecto:
en lugar de

Código Delphi [-]
 Result := frase;
Puse:

Código Delphi [-]
 Result := '';
porque de lo contrario el resultado de la función era la frase original más la frase capitalizada: por ejemplo: la frase originalLa Frase Capitalizada

Pues así es la verdad. Gracias a ti por informar del error, que he corregido en donde era menester. ;)


La franja horaria es GMT +2. Ahora son las 05:44:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi