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

https://www.vbarchiv.net
Rubrik: Variablen/Strings   |   VB-Versionen: VB.NET12.03.08
Vergleichen von 2 Sätzen (prozentual) (.NET)

Das prozentuale Vergleichen von 2 Sätzen ist realtiv einfach. Hier wird ein möglicher Lösungsvorschlag gezeigt.

Autor:   Jan SchwienBewertung:  Views:  12.295 
ohne HomepageSystem:  WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Das prozentuale Vergleichen von 2 Sätzen ist realtiv einfach und wird auch bspw. oft für Suchergebnisse oft.

Ich hoffe, dass euch der folgende Quellcode weiterhilft.
(Hinweis : Überprüfung erfolgt nur über übereinstimmende Wörter !!!)

' Vergleicht zwei Strings und gibt die Übereinstimmung 
' gleicher Wörter in Prozent zurück
Public Function Vergleichen(ByVal String1 As String, _
  ByVal String2 As String) As Integer
 
  Dim DC As Integer
  Dim nPercent As Integer = 0
 
  ' Zählt die übereinstimmenden Wörter
  Dim Treffer As Integer
 
  ' alle Satzzeichen entfernen
  String1 = System.Text.RegularExpressions.Regex.Replace(String1, "[\.,!?;:]", "")
  String2 = System.Text.RegularExpressions.Regex.Replace(String2, "[\.,!?;:]", "")
 
  ' Alle Wörter des 1.Satzes
  Dim Words1() As String = Split(String1.Trim.ToUpper, " ")
 
  ' Alle Wörter des 1.Satzes
  Dim Words2() As String = Split(String2.Trim.ToUpper, " ")
 
  ' Jedes Wort in 1. Satz  durchlaufen
  For i As Integer = 0 To Words1.Length - 1
    If Not Words1(i) = "" Then
      ' Jedes Wort in 1. Satz  mit den Worten im 2. Satz Vergleichen
      For j As Integer = 0 To Words2.Length-1
        If Not Words2(j) = "" Then
          If Words1(i) Like Words2(j) Then
            Treffer += 1
            Exit For
          End If
        End If
      Next j
    Else
      DC += 1
    End If
  Next i
 
  For d As Integer = 0 To Words2.Length - 1
    If Words2(d) = "" Then DC += 1
  Next d
 
  ' vom Längeren Satz ausgehen
  If Words1.Length >= Words2.Length Then
    If Words1.Length - DC > 0 Then
      nPercent = (Treffer * 100 / (Words1.Length - DC))
    End If
  Else
    If Words2.Length - DC > 0 Then
      nPercent = (Treffer * 100 / (Words2.Length - DC))
    End If
  End If
 
  ' Prozentuale Übereinstimmung zurückgeben
  Return nPercent
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.