Merhaba arkadaşlar ,

Regex ile Char Array i birleştirip bir T.C. kimlik nu ' su kontrolü(kontrol derken algoritması ile yanlış anlaşılmasın.) yapayım dedim . Fakat çıldırıyorum :mad:

Aşağıdaki kodların array kısmında bir hatam var fakat bunu bulamadım lütfen yardım eder misiniz ? Yoksa kafayı sıyırcam az kaldı . Sabahtan beri bakıyorum göremedim ! :(

Sorunu Çözdüm Arkadaşlar .


Çözüm = char array ile elde ettiğim her rakamı toplarken önce stringe sonra inte çevirdim ve sorun düzeldi merak edenler böyle yapabilirler.



private void button4_Click(object sender, EventArgs e)
{
string pattern32 = "^\\d{11}";

Regex tc = new Regex(pattern32);
char[] rakam = textBox4.Text.ToCharArray();
int tektoplam = rakam[0] + rakam[2]+ rakam[4]+ rakam[6] + rakam[8];
MessageBox.Show(tektoplam.ToString());
int cifttoplam = rakam[1] + rakam[3]+ rakam[5]+ rakam[7];
MessageBox.Show(cifttoplam.ToString());
int onuncurakam = (((tektoplam * 7 )- cifttoplam) % 10);
int onbirincirakam = ((tektoplam + cifttoplam + onuncurakam)% 10);
MessageBox.Show("Onuncu rakam"+onuncurakam.ToString() + " " + onbirincirakam.ToString());
if (tc.IsMatch(textBox4.Text) && onuncurakam == Convert.ToInt32(rakam[9]) && onbirincirakam == Convert.ToInt32(rakam[10]))
{
MessageBox.Show("Doğru Bir T.C Kimlik Numarası Girildi!");
}
else
{
MessageBox.Show("Yanlış Bir T.C. Kimlik Numarası Girildi!");
}
}


[B]Ek Olarak [/B]: Tektoplam ve cifttoplamdan sonra messageboxları ben koydum kontrol amaçlı fakat işte o messageBox ' lar yanlış sonuç döndürüyor bana .