byte[] number = new byte[16]; // number to validate
// Remove non-digits
int len = 0;
for (int i = 0; i < cardNumber.Length; i++) {
if (char.IsDigit(cardNumber, i)) {
// if (len == 16) return false; // number has too many digits
number[len++] = byte.Parse(cardNumber[i].ToString());
}
}
Aşağıda İse Luhn Algoritması Kullanılarak, Geçerli Bir Kart Numarası Olup Olmadığını Kontrol Ediyor.
Mantık Nedir : Kontrol Edilen Numara Tek İse Direkt Olarak Tek Indis Değişkenine Eklenir. Çift İse 2 Katı Alınır Ve Basamak Toplanı Eklenir.
En Sonda İse, 2 Çeşit İndis Değişkenlerinin Mod 10 İşlemine Tabi Tutulup, True/False Döndürülür.
int sum = 0;
if (len > 0) {
for (int i = len - 1; i >= 0; i--) {
if (i % 2 == len % 2) {
int n = number[i] * 2;
sum += (n / 10) + (n % 10);
} else sum += number[i];
}
}
int s = sum % 10;
if (s != 0) {
s = 10 - s;
cardNumber = cardNumber.Remove(cardNumber.Length - 1, 1) + s.ToString();
}
return cardNumber;