Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  1 711
Hei!

Har et lite problem med å sammenligne stringer.

La oss jeg har disse tre strenge

navn1 = "$db"
navn2 = "database"
input = "$"

Det jeg da vil finne ut er hvilken string input ligner mest på av navn1 og navn2.
Vil ha ut dette som en "score" i form av en int eller noe, altså er det utenkelig å bruke funksjoner som "StartsWith" som returnerer en boolean.

Ser litt på string.CompareOrdinal(input, navn1, true) men problemet er at med inputen over får jeg resultatet

"$db" .. -100
"database" .. -64

men hvis inputen er "$d" får jeg

"$db" .. -1
"database" .. -64

Men det jeg er jo at den skal returnere høyest score for "$db" begge gangene
For å sammenligne strenglikhet kan du bruke Levenshtein distansen. Det er en algoritme som returnerer det antallet tegn som må settes inn, slettes eller byttes om for å gjøre den ene strengen om til den andre.

Kode

int i = Levenshtein.Compute(navn1, input);
int j = Levenshtein.Compute(navn2, input);

if (i == j) // tilsvarende like
else if (i < j) // navn1 mest lik
else // navn2 mest lik