Kimi zaman uygulamalarımızda kullanıcıların banka bilgilerini almak gerekebilir. 01 Ocak 2010’dan itibaren hesaplar arası transfer işlemlerinin IBAN numarası kullanımı zorunlu hale getirlmiştir. Kullanıcılarıdan alınan IBAN bilgisinin gerçek olup olmadığını bilemeyiz ama doğruluğunu kontrol edebiliriz. Bunun için http://www.tcmb.gov.tr/iban/teblig.htm adresinde yayınlanan kurallara uygun olup olmadığını kontrol ederek giderebiliriz.Bu makalede anlatılan C# ile bu kontrolün nasıl yapıldığıdır. Kontrol kuralları http://www.tcmb.gov.tr/iban/teblig.htm adresinde açıkça anlatıldığı için yalnızca kod içerisine gerekli açıklamaları koymayı yeterli gördüm. Önce bu kuralları okuyarak sonra da kodu uygulayarak devam edebilirsiniz.Bunun için bir class hazırlayarak kütüphanenize ekleyebilir ve jenerik bir şekilde kullanabilirsiniz. Kod son halinde optimize olmayabilir. İstediğiniz şekilde değiştirerek kullanabilirsiniz.class IBAN{private string _RegularIBAN = null;private bool _ValidationStatus = false;private string[] _alpha = { “A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”, “J”, “K”, “L”, “M”, “N”, “O”, “P”, “Q”, “R”, “S”, “T”, “U”, “V”, “W”, “X”, “Y”, “Z”, };private string[] _alphanum = { “10”, “11”, “12”, “13”, “14”, “15”, “16”, “17”, “18”, “19”, “20”, “21”, “22”, “23”, “24”, “25”, “26”, “27”, “28”, “29”, “30”, “31”, “32”, “33”, “34”, “35” };public IBAN(string RawIBAN){_RegularIBAN = RawIBAN.Trim().ToUpper();_ValidationStatus = Validate(_RegularIBAN);}public bool ValidationStatus{get { return _ValidationStatus; }set { _ValidationStatus = value; }}public string RegularIBAN{get { return _RegularIBAN; }set { _RegularIBAN = value; }}public bool Validate(string strIBAN){// uzunluk en fazla 34 karakter olabilirif (strIBAN.Length > 34) return false;// ilk iki karakteri alalımstring l_str1_2 = strIBAN.Substring(0, 2).Trim();// kontrol karakterlerini alalımstring l_str3_4 = strIBAN.Substring(2, 2).Trim();// uzunluk kontrolü, boşluk olamazif (l_str1_2.Length != 2) return false;if (l_str3_4.Length != 2) return false;// ilk iki karakter yalnızca harf olabilirif (!IsAlpha(l_str1_2)) return false;// kontrol karakterleri yalnızca sayı olabilirif (!IsNumber(l_str3_4)) return false;// IBAN numarası yalnızca harf ve rakam olabilirif (!IsAlphaNumeric(strIBAN)) return false;// özel olan ilk 4 karakteri alalımstring l_temp1 = strIBAN.Substring(0, 4).Trim();// geri kalan karakterleri alalımstring l_temp2 = strIBAN.Substring(4).Trim();// ilk 4 karakteri sona atalımstring l_temp3 = l_temp2 + l_temp1;// harfleri sayı karşılıklarına çevirelimstring l_temp4 = l_temp3;for (int i = 0; i < _alpha.Length; i++)l_temp4 = l_temp4.Replace(_alpha[i], _alphanum[i]);// sayıya çevirelimdecimal l_num = Convert.ToDecimal(l_temp4);// 97'ye göre mod alalımdecimal l_mod = l_num % 97;// eğer mod bölümünden kalan 1 ise uygun bir IBAN// değilse uygun olmayan bir IBAN numarası demektir.if (l_mod != 1) return false;return true;}public bool IsAlpha(string strAlpha){System.Text.RegularExpressions.Regex objPattern = new System.Text.RegularExpressions.Regex("[^A-Z]");return !objPattern.IsMatch(strAlpha);}public bool IsNumber(string strNumber){System.Text.RegularExpressions.Regex objPattern = new System.Text.RegularExpressions.Regex("[^0-9]");return !objPattern.IsMatch(strNumber);}public bool IsAlphaNumeric(string strAlphaNumeric){System.Text.RegularExpressions.Regex objPattern = new System.Text.RegularExpressions.Regex("[^A-Z0-9]");return !objPattern.IsMatch(strAlphaNumeric);}public override string ToString(){return RegularIBAN + " is " + (_ValidationStatus ? "valid" : "invalid");}}
IBAN myIBAN = new IBAN(“TRXXXXXXXXXXXXXXXXXXXXXXXX”);Console.Write( myIBAN.RegularIBAN + myIBAN.ValidationStatus + ” ” + myIBAN);