Remover letras de uma string
Pessoal, montei o seguinte código para remover as letras de uma string e deixar apenas os números:
O resultado deveria ser: 123 apenas, mas não funciona, oq pode estar acontecendo com esse código.
Abraços,
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
Curtidas 0
Respostas
Massuda
11/03/2005
É 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);
GOSTEI 0
Eniorm
11/03/2005
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...
GOSTEI 0
Vanessa_d
11/03/2005
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;
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;
GOSTEI 0