Mi propuesta es tratar la cadena ignorando todos los caracteres que no sean números devolviendo un mensaje de error si no hay 20 números exactos (longitud de una cuenta bancaria española válida) y devolviendo la cadena con 20 números en caso contrario.
Código Delphi
[-]
Function cadenaACuentaEsp20digitos(candidata:string):string;
var
i:integer;
begin
for i := 0 to length(candidata) do
begin
if candidata[i] in ['1','2','3','4','5','6','7','8','9','0'] then
result := result + candidata[i];
end;
if length(result) <> 20 then
result:='No es una cuenta bancaria española válida'
end;
Una vez tienes la cadena de 20 números que entendemos que es un número de cuenta válido (se puede comprobar el dígito de control para asegurarnos). Si lo quieres pasara a un iban español Válido toca añadilre ESXX donde xx son los dígitos de control resultantes de aplicar el algoritmo correspondiente a los 20 digitos de la cuenta mas el código del pais (ES en el caso de españa).
Entiendo que el algoritmo para el cálculo de los dígitos de control ya lo tienes y que el problema se te planteaba solo a la hora de obtener un número de cuenta válido a partir de tus datos bancarios actuales.