Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Erweiterte Suche im Text??? (https://www.delphipraxis.net/34390-erweiterte-suche-im-text.html)

romber 22. Nov 2004 14:33


Erweiterte Suche im Text???
 
Hallo!

Ich möchte überprüfen, ob eine dynamisch vom Benutzer eingegebene Zeichenfolge in einem String vorhanden ist. Das geht doch ganz einfach mit pos:


Code:
...
if pos(LowerCase(Edit1.Text), LowerCase(Memo1.Text)) > 0 then
ShowMessage('String gefunden!')
Ok, funktioniert gut. Ich möchte es jetzt so machen, dass auch änliche Zeichenfolgen gefunden werden. Zum Beispiel man möchte prüffen, ob die Zeichenfolge 2 Zimmer Wohnung in einem Text vorhanden ist. Im Text ist diese vorhanden, aber mit Bindestrich 2-Zimmer Wohnung oder gar zusammengeschrieben 2 Zimmerwohnung. Diese müssen auch erkannt werden. Hat jemand schon so etwas gemacht? Wie mache ich das?

Danke!

Dax 22. Nov 2004 14:41

Re: Erweiterte Suche im Text???
 
Das kannst du mit einer Bei Google suchenLevensthein-Suche machen. Der Levensthein-Algorithmus vergleicht zwei Strings und gibt als Ergebnis die sogenannte "Levensthein-Distanz" zurück. Dieser Wert gibt an, nach wie vielen Operationen von "Auslassen", "Einfügen" und "Ersetzen" sich die beiden Strings gleichen.

romber 23. Nov 2004 13:54

Re: Erweiterte Suche im Text???
 
Erstmal Vielen Dank für die schnelle Antwort!

Ich habe eine Delphi-Unit gefunden, eine Implementation des Levenshteins-Algo. Aber wie kann es mir helfen? Die Funktion liefert ledeglich ein Integer-Wert, der Anzahl der insgesamt durchgeführten Änderungen an einem String anzeigt, damit dieser String dem Suchstring gleich ist. Was kann ich damit anfangen? Oder verstehe ich irgendwas falsch?

glkgereon 23. Nov 2004 13:56

Re: Erweiterte Suche im Text???
 
wenn der kleiner als sagen wir 3 ist, dann isses "ähnlich"

oder halt kleiner als 5...kommt halt drauf an

Dax 23. Nov 2004 13:57

Re: Erweiterte Suche im Text???
 
Ich würde den Rückgabewert irgendwie mit der Länge des Suchstrings verrechnen. In deinem Fall "2Raumwohnung" würde ich eine Levensthein-Distanz von 3 immer noch als Ergebnis interpretieren. Wie du das allerdings speziell löst, bleibt dir vorbehalten.

Und nein, du verstehst nichts falsch ;) Je niedriger der Funktionswert, desto ähnlicher sind sich die Strings.

romber 23. Nov 2004 14:15

Re: Erweiterte Suche im Text???
 
Das verstehe ich alles. Ein seht gutes Algo, wenn man eine Liste von Wörtern hat und die dem Suchstring änliche Wörter rausfiltern möchte. Bei mir ist es aber anders: ich habe ein Text, praktisch ein Satz (keine Stringliste oder so), in dem irgendwo ein Wort steht, der entweder dem Suchstring gleich oder sehr ähnlich ist. Dabei muss es mir nur mitgeteilt werden, ob der Suchstring oder ein ähliches Word in dem Text vorhanden ist. Genauso, wie man mithilfe pos überprüfft, ob eine Zeichenfolge vorhanden ist. Was den nun?

glkgereon 23. Nov 2004 14:31

Re: Erweiterte Suche im Text???
 
den satz in einzelne wörter aufteile ( Hier im Forum suchenExplode ) und die dann jeweils bewerten

jfheins 23. Nov 2004 14:36

Re: Erweiterte Suche im Text???
 
Du könntest in deinem Beispiel auch die Strings alle kleinschreiben (Delphi-Referenz durchsuchenansilowercase) und alles außer zahlen und buchstaben rausfiltern, und dann mit pos prüfen ...

gmarts 23. Nov 2004 14:43

Re: Erweiterte Suche im Text???
 
Zitat:

Zitat von Dax
Das kannst du mit einer Bei Google suchenLevensthein-Suche machen. Der Levensthein-Algorithmus vergleicht zwei Strings und gibt als Ergebnis die sogenannte "Levensthein-Distanz" zurück. Dieser Wert gibt an, nach wie vielen Operationen von "Auslassen", "Einfügen" und "Ersetzen" sich die beiden Strings gleichen.

mhhh....wär doch mal was für die DP-Suche?!

fkerber 23. Nov 2004 14:47

Re: Erweiterte Suche im Text???
 
Hi!

Zitat:

Zitat von gmarts
mhhh....wär doch mal was für die DP-Suche?!

Kommt auf den Aufwand an und wie schnell die Suche dann noch ist.
Aber ne Idee isses wert - schlags doch mal vor in Fragen und Anregungen.


Ciao Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz