Array
(
)

Tirar espaços e trocar por apenas um caracter?

Redoctober
   - 27 set 2004

Meu problema é:

#Código


var
texto : string;

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


Com o código acima, o resultado é :

testetestetesteteste

OK

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

Como eu faço?


Paulo_amorim
   - 27 set 2004

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:

#Código

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é+


Aroldo Zanela
   - 27 set 2004

Colega,

#Código

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;