Vor kurzem haben wir Ihnen gezeigt, wie man eine ISBN-Nummer auf Gültigkeit prüfen kann: Das vorgestellte Prüfverfahren berücksichtigte allerdings "nur" das ISBN-10 Verfahren. Die im Jahre 2007 neu eingeführte ISBN-13 konnte mit dem Tipp nicht geprüft werden. Nachfolgend daher nun die erweiterte Prüfroutine, bei der jetzt auch ISBN-13 Nummern geprüft werden können. ''' <summary> ''' Prüft eine ISBN-Nummer auf ihre Gültigkeit. ''' </summary> ''' <param name="sISBN">ISBN-Nummer</param> ''' <returns>True, wenn gültig. Andernfalls False.</returns> Public Function CheckISBN(ByVal sISBN As String) As Boolean ' Bindestriche und Leerzeichen entfernen sISBN = sISBN.Replace("-", "").Replace(" ", "") If sISBN.Length > 1 Then ' Prüfziffer: letzte Stelle Dim Pruefziffer As Integer If sISBN.Substring(sISBN.Length - 1, 1).ToUpper = "X" Then ' Sonderfall: X = 10 Pruefziffer = 10 Else Pruefziffer = Val(sISBN.Chars(sISBN.Length - 1)) End If If sISBN.Length = 13 Then ' ISBN-13 Dim Summe1 As Integer = 0 Dim Summe2 As Integer = 0 ' Summe der Ziffern 1,3,5,7,9,11 bilden ' Summe der Ziffern 2,4,6,8,10,12 bilden For i As Integer = 0 To sISBN.Length - 2 If i Mod 2 = 0 Then Summe1 += Val(sISBN.Chars(i)) Else Summe2 += Val(sISBN.Chars(i)) End If Next ' Letzte Stelle der Aufsummerung von 10 abziehen ' Als Ergebnis erhalten wir die korrekt berechnete Prüfziffer If CInt((10 - ((Summe1 + 3 * Summe2) Mod 10)) Mod 10) = Pruefziffer Then Return True End If Else ' ISBN-10 ' Summe bilden (bis auf letze Stelle) Dim Summe As Integer = 0 For i As Integer = 0 To sISBN.Length - 2 Summe += Val(sISBN.Chars(i)) * (i + 1) Next ' Errechnte Summe MOD 11 muss gleich der Prüfziffer sein If Summe Mod 11 = Pruefziffer Then Return True End If End If Return False End Function Dieser Tipp wurde bereits 11.530 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung sevOutBar 4.0 Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |