使用Javascript,我想检查两个字符串之间有多少差异.
就像是:
var oldName = "Alec";
var newName = "Alexander";
var differences = getDifference(oldName, newName) // differences = 6
Run Code Online (Sandbox Code Playgroud)
例如:
将"Alex"更改为"Alexander"将有5个更改,因为已添加5个字母
将"Alex"更改为"Allex"只会改变一个,因为您添加了"l"并将其余部分移位但未更改它们
将"亚历山大"改为"Allesander"将是2次更改(添加"l"并将"x"更改为"s").
我可以将每个名称拆分成一个字母数组,并在这个jsFiddle中使用以下函数轻松比较它们:
function compareNames(){
var oldName = $('#old').val().split("");
var newName = $('#new').val().split("");
var changeCount = 0;
var testLength = 0;
if(oldName.length > newName.length){
testLength=oldName.length;
}
else testLength=newName.length;
for(var i=0;i<testLength;i++){
if(oldName[i]!=newName[i]) {
changeCount++;
}
}
alert(changeCount);
}
Run Code Online (Sandbox Code Playgroud)
但是,我如何解释不换算的字母转换?
更新:这是我如何运作
Levenshtein距离正是我所需要的.谢谢彼得!
$(function () {
$('#compare').click(function () {
var oldName = $('.compare:eq(0)').val(); …Run Code Online (Sandbox Code Playgroud)我正在开发 AngularJS 应用程序,我想比较文本并突出显示另一个 div 中的差异。下面是我的代码
$scope.left="one two three";
$scope.right="one two four";
<div>{{diff}}</div>
Run Code Online (Sandbox Code Playgroud)
在上面的上下文中,如果我们比较两个作用域的左侧和右侧,我们就会知道 $scope.left 中的“三”是额外的,而 $scope.right 中的“四”是额外的。所以我们需要用红色突出“三”,用绿色突出“四”,这样就很容易找到区别。
有没有我可以使用此功能的插件或库?