Flutter字符串编辑距离计算插件edit_distance的使用

Flutter字符串编辑距离计算插件edit_distance的使用

edit_distance 插件提供了多种字符串距离算法的实现,用于模糊匹配。具体来说,该库提供了以下算法:

示例

以下是一个简单的示例,展示如何使用 edit_distance 插件来计算两个字符串之间的 Levenshtein 距离。

// 导入 edit_distance 库
import 'package:edit_distance/edit_distance.dart';

void main() {
  // 创建一个 Levenshtein 对象
  Levenshtein d = new Levenshtein();

  // 计算两个字符串之间的距离
  print(d.distance('witch', 'kitsch')); // 输出 2

  // 计算两个字符串之间的归一化距离
  print(d.normalizedDistance('witch', 'kitsch')); // 输出 0.3333333333333333
}

完整示例代码

以下是完整的示例代码,展示了如何使用 edit_distance 插件来计算不同类型的字符串距离。

// Copyright (c) 2016, Kwang Yul Seo. All rights reserved. Use of this source code
// is governed by a BSD-style license that can be found in the LICENSE file.

import 'package:edit_distance/edit_distance.dart';

void main() {
  // 创建一个 Levenshtein 对象
  Levenshtein levenshtein = new Levenshtein();

  // 计算两个字符串之间的 Levenshtein 距离
  print(levenshtein.distance('kitten', 'sitting')); // 输出 3

  // 计算两个字符串之间的归一化 Levenshtein 距离
  print(levenshtein.normalizedDistance('kitten', 'sitting')); // 输出 0.42857142857142855

  // 创建一个 JaroWinkler 对象
  JaroWinkler jaroWinkler = new JaroWinkler();

  // 计算两个字符串之间的 Jaro-Winkler 距离
  print(jaroWinkler.distance('martha', 'marhta')); // 输出 0.047619047619047616

  // 创建一个 JaccardNgram 对象
  JaccardNgram jaccardNgram = new JaccardNgram(ngramLength: 3);

  // 计算两个字符串之间的 Jaccard N-gram 距离
  print(jaccardNgram.distance('hello', 'world')); // 输出 0.6666666666666666
}

更多关于Flutter字符串编辑距离计算插件edit_distance的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter字符串编辑距离计算插件edit_distance的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


edit_distance 是一个用于计算两个字符串之间编辑距离的 Flutter 插件。编辑距离是指将一个字符串转换成另一个字符串所需的最少操作次数,操作包括插入、删除和替换字符。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 edit_distance 依赖:

dependencies:
  flutter:
    sdk: flutter
  edit_distance: ^2.0.0

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入 edit_distance 包:

import 'package:edit_distance/edit_distance.dart';

3. 使用 edit_distance 计算编辑距离

edit_distance 提供了多种编辑距离算法,包括:

  • Levenshtein: 计算 Levenshtein 距离。
  • Damerau: 计算 Damerau-Levenshtein 距离。
  • Jaccard: 计算 Jaccard 距离。
  • JaroWinkler: 计算 Jaro-Winkler 距离。

示例:使用 Levenshtein 距离

void main() {
  String str1 = "kitten";
  String str2 = "sitting";

  Levenshtein levenshtein = Levenshtein();
  int distance = levenshtein.distance(str1, str2);

  print("Levenshtein distance between '$str1' and '$str2' is $distance");
}

输出:

Levenshtein distance between 'kitten' and 'sitting' is 3

示例:使用 Damerau-Levenshtein 距离

void main() {
  String str1 = "kitten";
  String str2 = "sitting";

  Damerau damerau = Damerau();
  int distance = damerau.distance(str1, str2);

  print("Damerau-Levenshtein distance between '$str1' and '$str2' is $distance");
}

输出:

Damerau-Levenshtein distance between 'kitten' and 'sitting' is 3

示例:使用 Jaccard 距离

void main() {
  String str1 = "kitten";
  String str2 = "sitting";

  Jaccard jaccard = Jaccard();
  double distance = jaccard.distance(str1, str2);

  print("Jaccard distance between '$str1' and '$str2' is $distance");
}

输出:

Jaccard distance between 'kitten' and 'sitting' is 0.6666666666666666

示例:使用 Jaro-Winkler 距离

void main() {
  String str1 = "kitten";
  String str2 = "sitting";

  JaroWinkler jaroWinkler = JaroWinkler();
  double distance = jaroWinkler.distance(str1, str2);

  print("Jaro-Winkler distance between '$str1' and '$str2' is $distance");
}

输出:

Jaro-Winkler distance between 'kitten' and 'sitting' is 0.746031746031746
回到顶部