1.0.0 • Published 3 years ago

@tingxin_cy/edit-distance v1.0.0

Weekly downloads
1
License
ISC
Repository
github
Last release
3 years ago

edit-distance

编辑距离(Edit Distance),又称 Levenshtein 距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。 许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 一般来说,编辑距离越小,两个串的相似度越大。

特性

  • 支持计算最短编辑距离。
  • 支持计算最短编辑路径,基于编辑路径可以实现对文本进行 diff 高亮渲染。

安装

npm install @tingxin_cy/edit-distance -S

or

yarn add @tingxin_cy/edit-distance -S

Function:editDistance

import editDistance from '@tingxin_cy/edit-distance';

const a = 'AABCDE';
const b = 'AB3DEG';
const { distance, path } = editDistance(a, b);

/*
  distance = 3;
  path = [
    {
      type: "del",
      aChar: "A",
      bChar: "",
      aIndex: 1,
      bIndex: 1
    },
    {
      type: "sub",
      aChar: "C",
      bChar: "3",
      aIndex: 3,
      bIndex: 2
    },
    {
      type: "ins",
      aChar: "",
      bChar: "G",
      aIndex: 6,
      bIndex: 5
    }
  ]

  - a文本中 index = 1 的字符 A 被执行了删除操作
  - a文本中 index = 3 的字符 C 被替换为 b文本中 index = 2 的字符 3
  - a文本中 index = 6 的位置插入了字符 G,对应在b文本中 index = 5 
*/

参数说明

参数说明类型
a文本 a,原始文本string
b文本 b,目标文本string

结果说明:{ distance, path }

参数说明类型
distance最短编辑距离number
path编辑路径,对应最短编辑距离的操作路径path[]

path

参数说明类型
type操作类型,插入字符(ins),删除字符(del),替换字符(sub)'ins'|'del'|'sub'
aChara 文本中的原始字符string
bCharb 文本中的目标字符string
aIndexa 文本中原始字符的坐标number
bIndexb 文本中原始字符的坐标number