Fórum Remover letras de uma string #272011

11/03/2005

0

Pessoal, montei o seguinte código para remover as letras de uma string e deixar apenas os números:

texto := ´ENIO123´;
for i := 1 to Length(texto) do
   if not(texto[i] in [´0´..´9´]) then
      Delete(texto,i,1);


O resultado deveria ser: 123 apenas, mas não funciona, oq pode estar acontecendo com esse código.

Abraços,


Eniorm

Eniorm

Responder

Posts

11/03/2005

Massuda

É problema é que quando você faz o Delete, a string encolhe... então cada vez que o o Length(texto) é avaliado, ele dá um valor menor enquanto o i está sempre crescendo... resultado, o loop termina antes do esperado. Mas se você fizer de trás para frente dá certo:
texto := ´ENIO123´; 
for i := Length(texto) downto 1 do 
   if not(texto[i] in [´0´..´9´]) then 
      Delete(texto,i,1); 



Responder

Gostei + 0

11/03/2005

Eniorm

Mas se você fizer de trás para frente dá certo


Meu camagada... funcionou perfeitamente. E, após sua explicação, meditei sobre o problema e entendi perfeitamente.
Um grande abraço...


Responder

Gostei + 0

11/03/2005

Vanessa_d

Faz assim ó...

function FiltraNumeros(S: String): Result;
var
i: integer;
begin
Result := ´´;
for i := 1 to Length(S) do
if S[i] in [´0´..´9´] then
Result := Result + S[i];
end;


Responder

Gostei + 0

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

Aceitar