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

#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
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

von Gisbert5020 (3120 Punkte)
- 30.11.2014 um 13:21 Uhr

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
Seite 1 von 0
1