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