Pakete, Repositories und App-Kategorien suchen

Paketdetailsv2.2.0

string_similarity

Findet den Grad der Ähnlichkeit zwischen zwei Zeichenketten basierend auf dem Dice-Koeffizienten, der meist besser ist als die Levenshtein-Distanz.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
79.900
Likes
129
Pub-Punkte
160

Paket installieren

flutter pub add string_similarity

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Das string_similarity-Paket berechnet den Grad der Ähnlichkeit zwischen zwei Zeichenketten mithilfe des Dice-Koeffizienten, einer Methode, die oft genauer und schneller ist als der Levenshtein-Abstand. Es ist ideal für Aufgaben wie Fuzzy-Matching, Tippkorrektur und Duplikaterkennung in Textdaten. Der Algorithmus bewertet gemeinsame Bigramme zwischen Zeichenketten, um eine Similaritätsskala von 0 (kein Treffer) bis 1 (exakter Treffer) zu erzeugen. Dieses leichte Hilfsprogramm unterstützt alle wichtigen Plattformen einschließlich Android, iOS, Web, macOS, Windows und Linux und ist somit vielseitig für plattformübergreifende Anwendungen geeignet, die eine effiziente Zeichenkettenvergleichsfunktion erfordern.

Anwendungsfälle

  • Fuzzy-Suche in Benutzereingabe
  • Erkennung von nahezu doppelten Texteinträgen
  • Vorschläge zur automatischen Korrektur
  • Datendeduplizierung
  • Übereinstimmende Produktbezeichnungen über Quellen hinweg
  • Rechtschreibkorrektur

Hauptmerkmale

  • Verwendet den Dice-Koeffizienten zur Genauigkeit
  • Schnelle Leistung im Vergleich zu Levenshtein
  • Plattformübergreifende Kompatibilität
  • Einfache API mit klaren Ähnlichkeitsscores
  • Behandelt vergleiche ohne Berücksichtigung der Groß- und Kleinschreibung
  • Unterstützt nicht-englische Zeichen

Geeignet für

  • Textverarbeitungs-Apps
  • Such- und Autocomplete-Funktionen
  • Datenbereinigungsworkflows
  • Benutzereingabe-Validierung
  • Anwendungen, die eine schnelle Zeichenfolgenübereinstimmung benötigen

Hinweise

  • Am besten für kurze bis mittellange Zeichenfolgen
  • Nicht für sehr lange Texte optimiert
  • Unterstützt keine partielle Wortübereinstimmung
  • Beschränkt auf den Vergleich von Zeichenfolge zu Zeichenfolge
  • Keine integrierte Behandlung von Stopwörtern oder Stemming

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

string_similarity

pub package license: MIT

A fast, dependency-free Dart package for measuring the similarity between two strings with the Sørensen–Dice coefficient.

Use it for fuzzy search, spelling suggestions, duplicate detection, and ranking the closest match from a list.

✨ Why string_similarity?

  • Simple extension methods and static methods
  • Scores from 0.0 (completely different) to 1.0 (identical)
  • Best-match search with individual ratings and the winning index
  • No runtime dependencies
  • Works on every platform supported by Dart and Flutter

📦 Installation

dart pub add string_similarity

Then import the package:

import 'package:string_similarity/string_similarity.dart';

🚀 Compare two strings

final score = 'healed'.similarityTo('sealed');

print(score); // 0.8

The equivalent static method is:

final score = StringSimilarity.compareTwoStrings('healed', 'sealed');

🏆 Find the best match

final result = 'healed'.bestMatch([
  'edward',
  'sealed',
  'theatre',
]);

print(result.bestMatch.target); // sealed
print(result.bestMatch.rating); // 0.8
print(result.bestMatchIndex); // 1

Every candidate and its score remain available in result.ratings.

The equivalent static method is:

final result = StringSimilarity.findBestMatch(
  'healed',
  ['edward', 'sealed', 'theatre'],
);

🧠 How it works

The package compares adjacent character pairs (bigrams) using the Sørensen–Dice coefficient. Whitespace is removed before comparison. Letter case and diacritics are kept, so Cote, cote, and côte are different values.

🔡 Case-insensitive comparison

Normalize both strings before comparing them:

final score = 'DART'.toLowerCase().similarityTo('dart'.toLowerCase());

print(score); // 1.0

🧩 Available methods

API Returns Description
value.similarityTo(other) double Compares two nullable strings.
value.bestMatch(targets) BestMatch Rates every nullable target and selects the best one.
StringSimilarity.compareTwoStrings(first, second) double Static alternative to similarityTo.
StringSimilarity.findBestMatch(value, targets) BestMatch Static alternative to bestMatch.

BestMatch provides:

  • ratings: every target and its score
  • bestMatch: the highest-rated target
  • bestMatchIndex: the winning target's original index

⚙️ Behavior and edge cases

Input Result
Two identical values, including null or '' 1.0
Only one value is null or empty 0.0
Different values where either has fewer than two characters 0.0
Several targets share the highest score The first one wins
The target list is empty Throws ArgumentError

🔎 Comparison details

  • Whitespace is ignored, but punctuation is not.
  • Comparison is case-sensitive and diacritic-sensitive.
  • The algorithm works on UTF-16 code units rather than grapheme clusters, so some emoji and combined Unicode characters may not behave like visible characters.
  • Sørensen–Dice measures shared bigrams. It is not a drop-in replacement for edit-distance algorithms such as Levenshtein distance.

📄 License

Licensed under the permissive MIT License.

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden