Tirar espaços e trocar por apenas um caracter?

27/09/2004

0

Meu problema é:

var 
texto : string;

begin
texto := ´teste       teste   teste               teste´;
label1.Caption := StringReplace(texto, ´ ´, ´´, [rfReplaceAll]);
end;


Com o código acima, o resultado é :
[b:7f094be33f]
testetestetesteteste
[/b:7f094be33f]
OK

Só que eu preciso que ao tirar os espaços, que subistitua por esse caracter -> [b:7f094be33f]|[/b:7f094be33f] Mais se tiver 30, 20 ou 50 espaços, tever tirar todos e colocar apenas um -> [b:7f094be33f]|[/b:7f094be33f]

Como eu faço?


Redoctober

Redoctober

Responder

Posts

27/09/2004

Paulo_amorim

Olá

Não sei se tem um jeito mais automático, mas vc poderia varrer a String trocando o espaço pelo seu caractere com um if antes... ou seja, ele só troca pelo teu caractere se o caractere anterior não for já o seu....

ficaria mais ou menos assim - nesse caso eu troquei teu caractere pelo Chr(9), ou seja, o TAB:

for i := 2 to Length( Texto) do // a primeira posição eh desprezivel
begin
  if (Texto[i] = ´ ´) and (Texto[i-1] <> Chr(9)) then
    Texto[i] := Chr(9);
end;


Espero que ajude
Até+


Responder

27/09/2004

Aroldo Zanela

Colega,

procedure TForm1.Button1Click(Sender: TObject);
var Texto: String;
begin
  Texto := TrocaEspacos(´teste       teste   teste               teste´);
  ShowMessage(Texto);
end;
function TrocaEspacos(Linha: String): String;
var I, N: SmallInt;
    Delimitar: Boolean;
begin

  N := Length(Linha);

  Result := ´´;

  for i := 1 to N do
  begin
    if (Linha[I]=´ ´) and Delimitar then
    begin
      Result      := Result + ´|´;
      Delimitar   := false;
    end else
    if Linha[I]<>´ ´ then
    begin
      Result      := Result + Linha[I];
      Delimitar   := true;
    end;
  end;
end;



Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar