C# :: Aufgabe #74 :: Lösung #4
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
#4

von JKooP (18090 Punkte)
- 18.04.2020 um 10:59 Uhr
Die Aufgabe ist zwar schon ein wenig älter, aber C# hat sich weiterentwickelt.
Hier eine Lösung mit NET Core 3.x (C#-8 erforderlich!):
C#-Code
Hier eine Lösung mit NET Core 3.x (C#-8 erforderlich!):

using System; using System.Collections.Generic; using System.Text.RegularExpressions; namespace CS_Aufgabe_74_IBAN { class Program { private static readonly Dictionary<string, int> IbanLenghts = new Dictionary<string, int>() { {"DE", 22 }, {"AT", 20}, {"CH", 21} }; static void Main(string[] args) { const string IBAN = "DE68 2105 0170 0012 3456 78"; var (iban, validation) = CheckIban(IBAN); Console.WriteLine($"IBAN '{iban}' is {validation}"); } static (string iban, string validation) CheckIban(string iban) { var r = Regex.Replace(iban, @"[ \-]+", ""); _ = IbanLenghts.TryGetValue(r[..2], out int l); if (r.Length != l || !Regex.IsMatch(r, @"\b[A-Z]{2}\d{"+(l-2)+"}")) return (r, "invalid"); _ = decimal.TryParse(r[4..] + (r[0] - 55) + (r[1] - 55) + r[2..4], out var d); return (r, d % 97 == 1 ? "valid" : "invalid"); } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1