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