Wie überprüft man, ob zwei Zeichenfolgen in C # teilweise übereinstimmen? [Duplikat]

8

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

unterschiedlich sein

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.

    
Kamil Dhuleshia 26.03.2011, 20:00
quelle

3 Antworten

11

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 #.

    
BrokenGlass 26.03.2011, 20:02
quelle
0

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?

    
Jim Mitchener 26.03.2011 20:05
quelle

Tags und Links