[gelöst] String A ungefähr wie String B
[gelöst] String A ungefähr wie String B
moin, moin...
Ich würde in meine App gerne einen kleinen Sicherheitscheck einbauen, damit nich aus Dusseligkeit zusätzliche Daten zu einem falschen Datensatz hinzugefügt werden.
Der Titel des Films sei In einem Land vor unserer Zeit -8- Der erste Schnee.
Auf CD/DVD könnte der Filename aber anders/flasch geschrieben: In einem Land vor unserer Zeit -VIII - Der erste Schne.avi.
Oder abgürzt sein: IeLvuZ 8 - Der erste Schnee.
Kennt jemand eine Funktion/Prozedure, die mir nicht sagt, daß die beiden nicht gleich sind, sondern daß nur eine Übereinstimmung von x % besteht ?
mdv... scholly
Ich würde in meine App gerne einen kleinen Sicherheitscheck einbauen, damit nich aus Dusseligkeit zusätzliche Daten zu einem falschen Datensatz hinzugefügt werden.
Der Titel des Films sei In einem Land vor unserer Zeit -8- Der erste Schnee.
Auf CD/DVD könnte der Filename aber anders/flasch geschrieben: In einem Land vor unserer Zeit -VIII - Der erste Schne.avi.
Oder abgürzt sein: IeLvuZ 8 - Der erste Schnee.
Kennt jemand eine Funktion/Prozedure, die mir nicht sagt, daß die beiden nicht gleich sind, sondern daß nur eine Übereinstimmung von x % besteht ?
mdv... scholly
Zuletzt geändert von scholly am 17.05.2008 14:02, insgesamt 1-mal geändert.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Da gibt es in der Tat einen Algorithmus, schau mal hier: http://de.wikipedia.org/wiki/Levenshtein-Distanz
Bin nur noch sehr selten hier, bitte nur noch per PN kontaktieren
Re: String A ungefähr wie String B
Kann mir nicht vorstellen das es soetwas gibt...scholly hat geschrieben:Kennt jemand eine Funktion/Prozedure, die mir nicht sagt, daß die beiden nicht gleich sind, sondern daß nur eine Übereinstimmung von x % besteht ?
Musst du schon selbst machen...
//Edit:
tjamilan1612 hat geschrieben:Da gibt es in der Tat einen Algorithmus, schau mal hier: http://de.wikipedia.org/wiki/Levenshtein-Distanz
Hier hab ich eine VB Implementation gefunden, muss halt übersetzen:
http://www.merriampark.com/ld.htm#VB
http://www.merriampark.com/ld.htm#VB
Bin nur noch sehr selten hier, bitte nur noch per PN kontaktieren
Puh... starker Tobak fürn Anfänger....milan1612 hat geschrieben:Da gibt es in der Tat einen Algorithmus, schau mal hier: http://de.wikipedia.org/wiki/Levenshtein-Distanz
...
Hier hab ich eine VB Implementation gefunden, muss halt übersetzen: http://www.merriampark.com/ld.htm#VB
Mal sehn ob ich damit was basteln kann...
Verrätst Du mir vielleicht, warum Deine Antworten so schnell kamen ?
Danke... scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
ich habe eins in PB geschrieben:
Debugger :
1 = 100% Übereinstimmend
0 = 0% keine Übereinstimmung
EDIT:
Das Programm ist aber nicht sehr zuverlässig: Denn bei "ABCD" und "DCBA" erhalte ich auch 1.00, da ja alle Zeichen rine vorkommen...
Ich werde also noch weiter dran verbessern
Code: Alles auswählen
Procedure.f Splitten(Str$, String$)
Prozent.f
l = Len(Str$)
If l > 1
Links$ = Mid(Str$, 1, Int(l/2))
Rechts$ = Mid(Str$, Int(l/2)+1, Len(Str$))
If FindString(String$,Links$,1)
Prozent + 0.5
Else
Prozent + 0.5*Splitten(Links$, String$)
EndIf
If FindString(String$,Rechts$,1)
Prozent + 0.5
Else
Prozent + 0.5*Splitten(Rechts$, String$)
EndIf
Else
If FindString(String$,Str$,1)
Prozent + 1
EndIf
EndIf
ProcedureReturn Prozent
EndProcedure
Procedure.f StringVergleich(String1$, String2$)
ProcedureReturn Splitten(String1$, String2$)
EndProcedure
Debug StringVergleich("Wort", "Wort")
Debug StringVergleich("Wort", "Mord")
Debug StringVergleich("In einem Land vor unserer Zeit -VIII - Der erste Schne.avi", "In einem Land vor unserer Zeit -8- Der erste Schnee")
Code: Alles auswählen
1.000000
0.500000
0.968750
0 = 0% keine Übereinstimmung
EDIT:
Das Programm ist aber nicht sehr zuverlässig: Denn bei "ABCD" und "DCBA" erhalte ich auch 1.00, da ja alle Zeichen rine vorkommen...
Ich werde also noch weiter dran verbessern
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Ich fall vom Glauben ab
Ich hab zwar noch keinen Praxistext machen können, weil das hier so schnell ging und ich nebenbei Snooker kucke, aber in der Realität sieht das eher so aus:
Ich/man legt eine CD/DVD ein und wählt dann aus den vorhandenen Filmen den aus, für den in der DB Daten fehlen.
Zumindest bei mir ist es bei Spielfilmen sehr unwahrscheinlich, daß auf einem Medium welche sind, deren Namen sich ähnlich anhören (Debug > 0.5 ).
Bei Konzerten, Musik-Videos oder Dokus könnte das aufgrund des längeren Filenamens eher sein, aber ich werde das mal mit nem schicken Requester zur Kenntnis bringen und dann ist der Anwender hoffentlich wach
Wenn ich könnte, würde ich jetzt Dankbarkeits- oder Anerkennungspunkte vergeben
Danke, das Ihr das Forum zu dem macht, was (nicht nur) ich so schätze.
immernoch verblüfft... scholly
STARGÅTE hat geschrieben:ich habe eins in PB geschrieben:...
Das Programm ist aber nicht sehr zuverlässig: Denn bei "ABCD" und "DCBA" erhalte ich auch 1.00, da ja alle Zeichen rine vorkommen...
Ich werde also noch weiter dran verbessern
Ich hab zwar noch keinen Praxistext machen können, weil das hier so schnell ging und ich nebenbei Snooker kucke, aber in der Realität sieht das eher so aus:
Ich/man legt eine CD/DVD ein und wählt dann aus den vorhandenen Filmen den aus, für den in der DB Daten fehlen.
Zumindest bei mir ist es bei Spielfilmen sehr unwahrscheinlich, daß auf einem Medium welche sind, deren Namen sich ähnlich anhören (Debug > 0.5 ).
Bei Konzerten, Musik-Videos oder Dokus könnte das aufgrund des längeren Filenamens eher sein, aber ich werde das mal mit nem schicken Requester zur Kenntnis bringen und dann ist der Anwender hoffentlich wach
Wenn ich könnte, würde ich jetzt Dankbarkeits- oder Anerkennungspunkte vergeben
Danke, das Ihr das Forum zu dem macht, was (nicht nur) ich so schätze.
immernoch verblüfft... scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
- HeX0R
- Beiträge: 2954
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 - Kontaktdaten:
Also so schwer war der VB-Code ja nun wirklich nicht.
Das hättest du bestimmt auch hingekriegt:
Das hättest du bestimmt auch hingekriegt:
Code: Alles auswählen
;*******************************
;*** Get minimum of three values
;*******************************
Procedure.l Minimum(a.l, b.l, c.l)
Protected mi.l
mi = a
If b < mi
mi = b
EndIf
If c < mi
mi = c
EndIf
ProcedureReturn mi
EndProcedure
;********************************
;*** Compute Levenshtein Distance
;********************************
Procedure.f LD(s.s, t.s)
Protected m.l = Len(t), n.l = Len(s), i.l, j.l, s_i.s, t_j.s, cost.l, Result.f
; Step 1
If n = 0
If m = 0
ProcedureReturn 100
Else
ProcedureReturn 0
EndIf
EndIf
If m = 0
ProcedureReturn 0
EndIf
Dim d.l(n, m)
; Step 2
For i = 0 To n
d(i, 0) = i
Next i
For j = 0 To m
d(0, j) = j
Next j
; Step 3
For i = 1 To n
s_i = Mid(s, i, 1)
; Step 4
For j = 1 To m
t_j = Mid(t, j, 1)
; Step 5
If s_i = t_j
cost = 0
Else
cost = 1
EndIf
; Step 6
d(i, j) = Minimum(d(i - 1, j) + 1, d(i, j - 1) + 1, d(i - 1, j - 1) + cost)
Next j
Next i
; Step 7
Result = (m - d(n, m)) / m
ProcedureReturn Result * 100
EndProcedure
Debug LD("Wort", "Wort")
Debug LD("Wort", "Mord")
Debug LD("abcd", "dcba")
Debug LD("In einem Land vor unserer Zeit -8 - Der erste Schnee", "In einem Laind vor unserer Zeit -8 - Der erste Schnee")
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}
@Hexor,
Sehr gut zu verwenden
Immer noch knap 90% Treffer.
Sehr gut zu verwenden
Code: Alles auswählen
Debug LD("In einem Land vor unserer Zeit -8 - Der erste Schnee", "Ein Land vor unserer Zeit -8 - Der erste Schnee")
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive