sexta-feira, 28 de janeiro de 2011

Abreviar Nomes


Algumas vezes precisamos transformar, via programação, um nome como "Fulano Beltrano Ciclano" em "Fulano B. Ciclano". Veja nesta dica uma função para abreviar nomes completos e resolver casos como este.
Observação: É importante lembrar que o código ASCII #32 representa o caracter "espaço".

function AbreviarNome(Nome: String): String;
var
  Nomes: array[1..20] of string;
  i, TotalNomes: Integer;
begin
  Nome := Trim(Nome);
  Result := Nome;
  Nome := Nome + #32;
  i := Pos(#32, Nome);
  if i > 0 then
  begin
    TotalNomes := 0;
    while i > 0 do
    begin
      Inc(TotalNomes);
      Nomes[TotalNomes] := Copy(Nome, 1, i - 1);
      Delete(Nome, 1, i);
      i := Pos(#32, Nome);
    end;

    if TotalNomes > 2 then
    begin
      for i := 2 to TotalNomes - 1 do
        if Length(Nomes[i]) > 3 then
          Nomes[i] := Nomes[i][1] + '.';

      Result := '';
      for i := 1 to TotalNomes do
        Result := Result + Trim(Nomes[i]) + #32;

      Result := Trim(Result);
    end;
  end;
end;
Para testá-la, coloque em um form dois edits e um button, fazendo no onClick do button:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit2.Text := AbreviarNome(Edit1.Text);
end;

Nenhum comentário:

Postar um comentário