Tirar espaços e trocar por apenas um caracter?
27/09/2004
0
Meu problema é:
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?
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
Curtir tópico
+ 0
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:
Espero que ajude
Até+
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
Clique aqui para fazer login e interagir na Comunidade :)