Função para Abreviar Nomes

DAVID CANDIDO DA SILVA

DAVID CANDIDO DA SILVA Publicado 17/11/2017 


Função muito útil para a abreviação de nomes.
Ex: José Carlos da Silva = José C. da Silva.

É necessário estar declarado SysUtils na seção uses.

function AbreviaNomes(Nome: String): String;
var
  Nomes: array of string;
  i, n: integer;
begin
    Result := Nome;
  Nome := Trim(Nome);
  Nome := Nome + #32;
    i := Pos(#32, Nome);
    if i > 0 then
  begin
      n := 0;
      { Separa os Nomes }
    while i > 0 do
    begin
      SetLength(Nomes, Length(Nomes) + 1);
      Nomes[n] := Copy(Nome, 1, i - 1);
      Delete(Nome, 1, i);
      i := Pos(#32, Nome);
      inc(n);
    end;
      if n > 1 then
    begin
        { Abreviar a partir do segundo nome, exceto o último. }
      for i := 1 to n - 2 do
        { Contém mais de 3 letras? (ignorar de, da, das, do, dos, etc.) }
        if Length(Nomes[i]) > 3 then
          Nomes[i] := Nomes[i][1] + '.';
        Result := '';
      for i := 0 to n - 1 do
        Result := Result + Trim(Nomes[i]) + #32;
      end;
  end;
end;

Exemplo de uso

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(AbreviaNomes('Antônio Carlos da Silveira'));
  ShowMessage(AbreviaNomes('Luiz Augusto Campos'));
end;
 

Voltar ao topo