Programmer's Corner 2/91 Ähnlichkeitsbestimmung von Zeichenketten ================= von Carsten Strotmann (nach einem Artikel von Michael Hönning in PASCAL 2/87) Folgendes Problem: Wir haben eine ulti- mative Adressverwaltung geschrieben und in unendlichen Nachtschichten das Tele- fonbuch unserer Heimatstadt eingetip- selt. Und es kommt der Tag, an dem wir dieses geniale Programm auch gebrau- chen: Wir suchen jemanden mit dem Nach- namen Meier, oder so ähnlich. Viele Datenbankprogramme besitzen daher die Funktion, mit Wildcards suchen zu lassen. Die entspricht den Wildcards im DOS. Folgende Wildcards sind gebräuchlich: '?' für einzelne Buchstaben '*' für den Rest der Zeichenkette Also suchen wir nach Mei*. Ausgegeben werden aber viel zu viele Datensätze, wie z.b. Meimann, Meierhans, Meiler usw. während Maier fehlt. Diese Fun- ktion führt nicht zum Ziel. Wir ver- suchen es mit M?ier, Ergebnis: Meier, Maier. Also schon viel besser. Es feh- len uns aber noch Namen wie Mayr, Meir, Meyr... Eine Lösung dieses Problems ist die s.g. UNISON Routine. Sie ermittelt, wieviel Prozent einer Zeichenkette in einer anderen enthalten sind. Anhand der ermittelten Prozentzahl kann man die Ähnlichkeit abschätzen. Diese Routine findet Ihr auf der Disk als ACTION! Listing (UNISON.ACT) und ausführbares Programm (UNISON.COM). Es sollte keine Schwierigkeiten bereiten, die Routine auch in andere Programm- iersprachen wie TURBO-BASIC zu übersetzen. Ist diese Routine in die o.g. Adress- verwaltung eingebaut, so gibt man dem Suchbegriff an (MEIER) und die ge- wünschte Ähnlichkeit ( 80 %). Nun gibt das Programm alle Meier's in den ver- schiedenen Schreibarten aus.