是否有一个函数可以返回两个字符串之间的差异计数?

时间:2016-06-29 16:04:28

标签: string count compare rust

我要比较等长的字符串。然后我需要计算他们的差异。我会手动开始这样做 - 但是因为有这样一个方法工具箱我想知道是否有一个函数可以计算无论如何发生的差异?或者创建一个我可以计算元素的集合?

2 个答案:

答案 0 :(得分:4)

您可以使用strsim包。它提供各种弦乐差异方法,如汉明,Levenshtein,Damerau-Levenshtein,Jaro和Jaro-Winkler。我个人喜欢Damerau-Levenshtein的区别,它会计算你需要交换的相邻字符的数量,以及你需要删除,插入或替换其中一个字符串到另一个字符串的字符数。

case class Banana() extends Fruit
defined class Banana

case class Orange() extends Fruit
defined class Orange

case class Basket[+A <: Fruit](items: List[A]) {
    // ...
    def addAll[B >: A <: Fruit, C >: A](newItems: List[B])(implicit ev: B <:< C): Basket[B] =
  new Basket(items ++ newItems)
    // ...
  }
defined class Basket

val bananaBasket: Basket[Banana] = Basket(List(Banana(), Banana()))
bananaBasket: Basket[Banana] = Basket(List(Banana(), Banana()))

bananaBasket.addAll(List(Orange())) // not accepted
Main.scala:593: Cannot prove that Product with Serializable with cmd27.Fruit <:< cmd47.Banana.
bananaBasket.addAll(List(Orange()))
                   ^
Compilation Failed

bananaBasket.addAll(List(Banana())) // accepted
res52: Basket[Banana] = Basket(List(Banana(), Banana(), Banana()))

答案 1 :(得分:2)

汉明距离的实现是微不足道的:

str_a.chars().zip(str_b.chars()).filter(|x| x.0!=x.1).count()