miércoles, 23 de diciembre de 2015

Validar un IBAN con C#

Os adjunto una función en c# que al pasarle una cadena de carácteres con el IBAN a validar este devuelve True si es correcta.

public static bool ValidateIBAN(string iban)
{
    if (string.IsNullOrEmpty(iban) || (!Regex.IsMatch(iban, "^[A-Z0-9]")))
    {
        return false;
    }

    iban = iban.Replace(" ", String.Empty);

    string iban2 = iban.Substring(4, iban.Length - 4) + iban.Substring(0, 4);

    const int asciiShift = 55;
    var sb = new StringBuilder();
    foreach (char c in iban2)
    {
        int x = Char.IsLetter(c) ? c - asciiShift : int.Parse(c.ToString());
        sb.Append(x);
    }

    string checkSumString = sb.ToString();
    int checksum = int.Parse(checkSumString.Substring(0, 1));
    for (var i = 1; i < checkSumString.Length; i++)
    {
        int v = int.Parse(checkSumString.Substring(i, 1));
        checksum *= 10;
        checksum += v;
        checksum %= 97;
    }
    return (checksum == 1);
}

No hay comentarios:

Publicar un comentario