相关疑难解决方法(0)

使用Javascript检测两个字符串之间的差异

使用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距离正是我所需要的.谢谢彼得!

工作jsFiddle

$(function () {
    $('#compare').click(function () {
        var oldName = $('.compare:eq(0)').val(); …
Run Code Online (Sandbox Code Playgroud)

javascript string compare

18
推荐指数
1
解决办法
2万
查看次数

比较两个文本并找出差异

我正在开发 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 中的“四”是额外的。所以我们需要用红色突出“三”,用绿色突出“四”,这样就很容易找到区别。

有没有我可以使用此功能的插件或库?

jquery angularjs angularjs-directive angularjs-scope

1
推荐指数
1
解决办法
3009
查看次数