Klasa IbanHelper pozwala na wyznaczenie dwóch cyfr początkowych numeru rachunku bankowego - tzw. sumy kontrolnej.
public static class IbanHelper { /// <summary> /// Wyznacza cyfry kontrolne numeru rachunku bankowego na podstawie dwóch jego fragmentów (cyfr ma razem ma być 6 x 4 = 24) /// <param name="prefix">Część stała numeru rachunku (przyznana pula)</param> /// <param name="nr_end">Część zmienna numeru rachunku</param> /// <param name="ctrlCifers">cyfry kontrolne</param> /// <param name="ibanCifers">reszta numeru rachunku (bez spacji)</param> public static void Wyznacz(string prefix, string nr_end, out int ctrlCifers, out string ibanCifers) { string nrIban = prefix + nr_end; if (string.IsNullOrEmpty(nrIban)) throw new ArgumentException("Nie podano numeru rachunku."); nrIban = nrIban.Replace(" ", null); // usunięcie ewentualnych spacji if (!Regex.IsMatch(nrIban, @"^\d{24}$")) throw new ArgumentException("Podany numer rachunku jest nieprawidłowy."); string nr2 = nrIban + "252100"; // A=10, B=11, ..., L=21, ..., P=25 oraz 2 zera int modulo = 0; foreach (char znak in nr2) modulo = (10 * modulo + int.Parse(znak.ToString())) % 97; modulo = 98 - modulo; ctrlCifers = modulo; ibanCifers = nrIban; } /// <summary> /// Wyznacza numer rachunku bankowego na podstawie dwóch jego fragmentów (cyfr ma razem ma być 6 x 4 = 24) /// dodając cyfry kontrolne na początku. /// Postać: CC AAAA BBBB CCCC DDDD EEEE FFFF /// </summary> /// <param name="prefix">Część stała numeru rachunku (przyznana pula)</param> /// <param name="nr_end">Część zmienna numeru rachunku</param> public static string WyliczNRB_Segm(string prefix, string nr_end) { int modulo; string nrIban; Wyznacz(prefix, nr_end, out modulo, out nrIban); return string.Format("{0:00} {1}", modulo, string.Join(" ", Regex.Split(nrIban, "(....)(....)(....)(....)(....)(....)")).Trim()); } /// <summary> /// Wyznacza numer rachunku bankowego na podstawie dwóch jego fragmentów (cyfr ma razem ma być 6 x 4 = 24) /// dodając cyfry kontrolne na początku. /// Postać: CCAAAABBBBCCCCDDDDEEEEFFFF /// </summary> /// <param name="prefix">Część stała numeru rachunku (przyznana pula)</param> /// <param name="nr_end">Część zmienna numeru rachunku</param> public static string WyliczNRB_NoSpaces(string prefix, string nr_end) { int modulo; string nrIban; Wyznacz(prefix, nr_end, out modulo, out nrIban); return string.Format("{0:00}{1}", modulo, nrIban); } }