Inicio › Foros › Lenguajes de programación, desarrollo, código fuente › Delphi › Procedimiento que obtenga iniciales de un nombre y apellidos Delphi [RESUELTO] › Respuesta a: Procedimiento que obtenga iniciales de un nombre y apellidos Delphi [RESUELTO]
11/17/2023 a las 14:18
#49969
alonsojpd
Superadministrador
Puedes usar la siguiente función, a la que le pasamos el nombre y los apellidos separados y devuelve las iniciales. Aunque no obtuviéramos el nombre y los apellidos separados, el procedimiento sería el mismo, dado que separará cada palabra por los espacios que contenga, independientemente de si es nombre o apellidos:
Delphi/Pascal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Function obtenerIniciales(nombre : string; apellido1 : string; apellido2 : string) : string; var i : integer; iniciales, inicialesNombre, inicialesApellido1, inicialesApellido2 : string; nombres : TStringList; begin nombres := TStringList.Create; nombres.Delimiter := ' '; nombres.DelimitedText := nombre; //Recorremos los nombres obtenidos y desechamos los artículos que no sean nombres inicialesNombre := ''; for i := 0 to nombres.Count - 1 do begin //Suponemos que no hay nombres con dos o un carácter if (Length(nombres.Strings[i]) > 2) then if ((AnsiLowerCase (nombres.Strings[i]) <> 'del') and (AnsiLowerCase (nombres.Strings[i]) <> 'los') and (AnsiLowerCase (nombres.Strings[i]) <> 'las')) then inicialesNombre := inicialesNombre + copy (nombres.Strings[i], 0, 1); end; //Como tenemos separados los apellidos, cogemos el primer carácter de cada uno de ellos if (apellido1 <> '') then inicialesApellido1 := copy(apellido1, 0, 1); if (apellido2 <> '') then inicialesApellido2 := copy(apellido2, 0, 1); iniciales := inicialesNombre + inicialesApellido1 + inicialesApellido2; //Quitamos las posibles tildes/acentos iniciales := quitarTildes (iniciales); result := iniciales; end; |