1 Jun 2011, 8:19am
Ámítástechnika: c# calculating calculator check checker code country iban independent international bank account program validate validator
by kga
kga
Hozzászólások kikapcsolva

IBAN szám ellenőrzése C# -ban

Tegnap áttettem Delphi -ből C# -ba a nemzetközi bankszámlaszám (IBAN – International Bank Account Number) ellenőrző algoritmust. Előnye, hogy teljesen országfüggetlen. Teszteléshez pár minta:

LB62099900000001001901229114
HU42117730161111101800000000
SI56191000000123438

És a kód:


    public class BankAccountCheck
    {
        private string ChangeAlpha(string input)
        {
            string result = input;
            for (int i = 65; i <= 90; i++)
            {
                result = result.Replace(Convert.ToChar(i).ToString(), Convert.ToString(i - 55));
            }
            return result;
        }

        private int CalculateDigits(string iban)
        {
            iban = iban.ToUpper();
            if (iban.IndexOf("IBAN") > -1) iban = iban.Replace("IBAN", "");
            iban += iban.Substring(0, 4);
            iban = iban.Remove(0, 4);
            iban = ChangeAlpha(iban);
            int v = 1;
            int l = 9;
            int rest = 0;
            int number = 0;
            string alpha = "";
            try
            {
                do
                {
                    if (l > iban.Length) l = iban.Length;
                    alpha = alpha + iban.Substring(v - 1, ((v - 1) + l) > iban.Length ? (iban.Length - (v - 1)) : l);
                    number = Convert.ToInt32(alpha);
                    rest = number % 97;
                    v += l;
                    alpha = rest.ToString();
                    l = 9 - alpha.Length;

                } while (v <= iban.Length);
            }
            catch
            {
                rest = 0;
            }
            return rest;
        }

        public bool CheckIBAN(string iban, bool justcountrycode = false)
        {
            string[] countrycodes = {"AD","AE","AL","AT","BA","BE","BG","CH","CY","CZ","DE","DK",
       "EE","ES","FI","FO","FR","GB","GE","GI","GL","GR","HR","HU","IE","IL","IS",
       "IT","KW","KZ","LB","LI","LT","LU","LV","MC","ME","MK","MR","MT","MU","NL",
       "NO","PL","PT","RO","RS","SA","SE","SI","SK","SM","TN","TR"};

            bool ret = true;
            iban = iban.Replace(" ", "").Replace("-","");
            if (Array.IndexOf(countrycodes,iban.Substring(0,2))< 0)
            {
                ret = false;
            }
            if (justcountrycode) return ret;
              if (CalculateDigits(iban) == 1)
                  ret = true;
              else
                  ret = false;
              return ret;
        }
    }
0

 
← IBAN szám ellenőrzése Delphi -vel  Tegnap →
 
  • Licensz

    Blog under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 License
    Creative Commons License

  •  
    Copyright © 2011. Gábor Keve.
    Mindennapi gondolatmorzsák
     

     

    Mindennapi gondolatmorzsák

    Képek-, gondolatok-, és minden más!
  • Oldalak

    • Rólam
    • Statisztika
  •  
  • Cimkefelhő

    írások örömóda alváshiány Amerika blog Cell 2 ciki csőben dobozda.hu dudál felhő ficam gondoljodik ingyenes készítés kitűnő konyha kornspitz lámpás móka magam meteor néz nyár-fagomba pakolás putto rejtett relaxálás rezsin rongált ronkocsma sitetalk.com stoner Széchenyi szürke szőnyeg törölköző titokzokni tomboló uborka validator wasabi Watch My Dying welcome buli zoknimanó