C# :: Aufgabe #74 :: Lösung #2

4 Lösungen Lösungen öffentlich
#74

IBAN Checksumme prüfen

Anfänger - C# von pocki - 26.11.2014 um 12:27 Uhr
Schreibe eine Funktion, welche einen IBAN als Zeichenfolge entgegen nimmt.
Bei diese Zeichenfolge soll überprüft werden, ob die Checksumme/Prüfsumme für eine gültige IBAN stimmt.

Die unterschiedliche Schreibweisen (mit und ohne Freiraum) sowie die unterschiedlichen Längen je nach Land sind ebenfalls zu berücksichtigen.

Beispiele der Schreibweisen:
DE19 1234 1234 1234 1234 12
DE19-1234-1234-1234-1234-12
DE19123412341234123412
AT19 1234 1234 1234 1234
CH19 1234 1234 1234 1234 1
#2
vote_ok
von Gisbert5020 (3120 Punkte) - 30.11.2014 um 13:21 Uhr
Quellcode ausblenden C#-Code
public bool ibancheck(string iban)
        {
            //Hier kann man das Dictionary mit dem Ländercode und IBAN-Länge der
            // verschiedenen Ländern vervollständigen
            Dictionary<string, int> ibanLänder = new Dictionary<string, int>();
            ibanLänder.Add("DE", 22);
            ibanLänder.Add("AT", 20);
            ibanLänder.Add("CH", 21);
            ibanLänder.Add("FR", 27);
            ibanLänder.Add("IT", 27);
            string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            // Blanke Zwischenräume und Bindestriche löschen
            iban = iban.Replace(" ", "").Replace("-", "");
            // Ländercode prüfen
            if (!ibanLänder.ContainsKey(iban.Substring(0,2)))
                return false;
            // IBAN-Länge mit Wert aus Dictionary ibanLänder vergleichen
            if (ibanLänder[iban.Substring(0,2)] != iban.Length)
                return false;
            // Den Ländercod und die Prüfziffer von der IBAN trennen
            string iban2 = iban.Substring(4);
            // Index des Ländercodes im Alphabet feststellen, 
            // 9 zum Index dazu zählen und an iban2 anfügen.
            int stelle = alphabet.IndexOf(iban[0]);
            stelle += 10;
            iban2 += stelle.ToString();
            stelle = alphabet.IndexOf(iban[1]);
            stelle += 10;
            iban2 += stelle.ToString();
            // Prüfziffer an iban2 anfügen
            iban2 += iban.Substring(2, 2);
            decimal zahl = Convert.ToDecimal(iban2);
            // Der Rest von Zahl mod 97 muß 1 sein, sonst ist die IBAN falsch
            decimal rest = zahl % 97;
            if (rest == 1)
                return true;
            return false;
        }

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben