ich hab mich mal aus Langeweile an die Vergleichsfunktion gemacht ...
In der Funktion wird nur mit Buchstaben verglichen.
Sonderzeichen und Zahlen und der gleichen werden nicht berücksichtigt.
Vielleicht ist das ja hilfreich
Spoiler anzeigen
#include <Array.au3>
; benötigt die LevenshteinDistance.dll von Bernd670
$Str1 = '"Sweet(&%$§"!$ 123_About Me":Gabriella Cilmi'
$Str2 = 'Gabriella Cilmi: "Sweet About Me"'
MsgBox(0,'', CompTwoStr($Str1, $Str2))
[/autoit] [autoit][/autoit] [autoit]Func CompTwoStr($s, $t)
Local $a_str1, $a_str2, $a_str1_result, $a_str2_result
Local $hDLL = DllOpen("LevenshteinDistance.dll")
Local $n = StringLen($s)
Local $m = StringLen($t)
If $n < $m Then $n = $m
$a_str1=StringSplit(StringRegExpReplace($s, '\W|_|[0-9]', " ")," ",2)
_arraysort($a_str1)
$a_str1_result = _ArrayFindAll($a_str1, "")
For $i = 1 To UBound($a_str1_result)
_ArrayDelete($a_str1,$a_str1_result[0])
Next
$s = _ArrayToString($a_str1,"")
$a_str2=StringSplit(StringRegExpReplace($t, '\W|_|[0-9]', " ")," ",2)
_arraysort($a_str2)
$a_str2_result = _ArrayFindAll($a_str2, "")
For $i = 1 To UBound($a_str2_result)
_ArrayDelete($a_str2,$a_str2_result[0])
Next
$t = _ArrayToString($a_str2,"")
$arDLL = DllCall($hDLL, "int", "LevenshteinDistance", "str", $s, "str", $t)
DllClose($hDLL)
If IsArray($arDLL) Then Return ($n - $arDLL[0]) / $n
EndFunc
Edit: hatte ganz übersehen, dass dabei noch nicht Zahlen und der Unterstrich mit gefiltert werden.
Jetzt sollte es aber passen