vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Variablen/Strings · Algorithmen/Mathematik   |   VB-Versionen: VB2005, VB200810.09.09
ISBN-Nummer auf Gültigkeit prüfen II

Eine Funktion zum Prüfen einer beliebigen ISBN-Nummer auf ihre Gültigkeit, wobei sowohl das ISBN-10 als auch das ISBN-13 Verfahren berücksichtigt wird.

Autor:   Dieter OtterBewertung:  Views:  11.513 
www.tools4vb.deSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Vor kurzem haben wir Ihnen gezeigt, wie man eine ISBN-Nummer auf Gültigkeit prüfen kann:
 ISBN-Nummer auf Gültigkeit prüfen

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



Anzeige

Kauftipp Unser Dauerbrenner!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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


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.