Strings auf ungefähre Gleichheit untersuchen

Operator_Jon

Erfahrenes Mitglied
Hey...

Ich hab da mal eine kleine Frage...
Ich möchte 2 Strings vergleichen, die vllt. nur ungefähr gleich sind, also das sich max. 2 Zeichen unterscheiden.
Weiß einer wie das geht?
Meine Idee war die Strings zu splitten, jedes Zeichen einzeln zu vergleichen und die Fehler zu zählen, etwas umständlich oder :rolleyes:?

Danke!
 
Okay, ich habs nun mit der Splitting-Technik gelöst!

Falls es noch jemanden interessiert, hier ist der Code:
Visual Basic:
Public Declare Function lstrlen Lib "kernel32.dll" _
    Alias "lstrlenA" (ByVal lpString As Any) _
    As Long

Public Function singleLetters(ByVal str As String) As String()
    Dim ln As Integer
    Dim i As Integer
    Dim arr() As String
    
    ln = lstrlen(str)
    If ln = 0 Then ln = 1
    ReDim arr(0 To ln - 1) As String
    For i = 1 To ln Step 1
        arr(i - 1) = Mid(str, i, 1)
    Next i
    
    singleLetters = arr
End Function

Public Function compareStrings(ByVal str1 As String, ByVal str2 As String, ByVal collisions As Integer) As Boolean
    Dim a1() As String
    Dim a2() As String
    Dim ls1 As Integer
    Dim ls2 As Integer
    Dim errors As Integer
    Dim i As Integer
    Dim x As Integer
    
    errors = 0
    a1 = singleLetters(str1)
    a2 = singleLetters(str2)
    ls1 = lstrlen(str1)
    ls2 = lstrlen(str2)
    
    If ls1 > ls2 Then
        x = ls1
    ElseIf ls2 > ls1 Then
        x = ls2
    Else
        x = ls1
    End If
    
    For i = 0 To x - 1 Step 1
        On Error Resume Next
        If i > ls1 Or i > ls2 Then
            errors = errors + 1
        Else
            If a1(i) <> a2(i) Then errors = errors + 1
        End If
    Next i
    
    If errors > collisions Then
        compareStrings = False
    Else
        compareStrings = True
    End If
End Function
 
Hallo,

Wenn du die exakten Unterschiede feststellen willst, fällt mir auch nichts besseres ein.
Aber es gibt einen 'Like'-Befehl, da kannst du die Ähnlichkeit prüfen.
Code:
Dim String1, String2

String1 = "Das ist ein Text"
String2 = "Das ist auch ein Text"

If String1 Like "Das ist*ein Text" = True Then ' * ... irgendwelche Zeichen.
...
End If
 
Zurück