poniedziałek, 2 lipca 2012

Walidacja numeru Regon w c#

Funkcja walidująca numer Regon w c# zarówno 9-cio jak i 14 cyfrowy.
Walidacja na podstawie sumy kontrolnej jak oraz długości ciągu cyfr.
Funkcja zwrac true w przypadku poprawnego numeru

public static bool ValidateRegon(ref string szRegon)
{
    byte[] tab8 = new byte[8] { 8, 9, 2, 3, 4, 5, 6, 7 };
    byte[] tab13 = new byte[13] { 2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8 };
    byte[] tablicz = new byte[] { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 };
    bool bResult = false;
    int suma = 0;
    int sumcontrol = 0;

    szRegon = szRegon.Trim();

    if ((szRegon.Length == 9)||(szRegon.Length==14))
    {
        foreach (char l in szRegon)
        {
            byte b = Convert.ToByte(l);
            if (Array.IndexOf(tablicz, Convert.ToByte(l)) == -1) return false;
        }

        sumcontrol = Convert.ToInt32(szRegon[(szRegon.Length==9)?8:13].ToString());

        for (int i = 0; i < ((szRegon.Length==9)?8:13); i++)
        {
            suma += ((szRegon.Length==9)?tab8[i]:tab13[i]) * Convert.ToInt32(szRegon[i].ToString());
        }

        bResult = ( (((suma % 11)!=10)?(suma % 11):0) == sumcontrol);
    }
    else return false;
          
    return bResult;
}

Brak komentarzy:

Prześlij komentarz