Rubrik: Variablen/Strings | VB-Versionen: VB.NET | 12.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 Schwien | Bewertung: | Views: 12.295 |
ohne Homepage | System: 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