Ich erstelle eine Anwendung, die die Benutzereingabe eines Song- oder Interpreten- oder Albumnamens nicht berücksichtigt und dann durch ein String-Array oder eine ArrayList nach möglichen Übereinstimmungen sucht.
Die automatischen Vorschläge werden basierend auf dem Übereinstimmungsprozentsatz berechnet.
Zum Beispiel
Wenn der Benutzer link prk eingibt, sollte er Linkin Park
oder Link 80
oder Link Wray
finden, aber der Prozentsatz der Übereinstimmung wird für alle
Angenommen, die Sammlung sucht nur nach Artist-Namen in der Artist Collection und nach Song-Namen in der Song-Sammlung.
(Prozentangaben dienen nur zur Erläuterung)
%Vor%Die Lösung muss kein C # -Code sein, jeder Regex- oder Pseudo-Code ist gut, sollte aber in C # implementiert werden können.
Normalerweise wird hierfür eine Implementierung der Levenshtein-Distanz , auch Edit-Distanz genannt, verwendet. Dies findet Übereinstimmungen basierend auf der minimalen Anzahl von Bearbeitungen, die benötigt werden, um eine Zeichenfolge in die andere umzuwandeln, wobei alle Einfügungen, Löschungen oder Ersetzungen eines einzelnen Zeichens als ein Maß für die "Kosten" gezählt werden - Kandidaten sind dann Zeichenfolgen mit minimalen Kosten .
Hier ist ein Link zu einem Artikel mit einer generischen Implementierung in C #.
Sie suchen Levenshtein Entfernung
Hier ist eine Implementierung in C #.
Hier ist eine generische Implementierung der Levenshtein-Distanz . (wie im Diff / Dist. zwischen zwei IEnum<T>
)
Implementierungen des Levenshtein-Abstandsalgorithmus in vielen Sprachen.
Sie können ein großartiges Beispiel für Algorithmen und Implementierungen in dieser Frage finden. Gibt es eine Fuzzy-Suche oder? String Similarity Funktioniert für C # geschriebene Bibliotheken?