检查单个字符是否更改为字符串,或者是否包含多个字符

时间:2015-12-18 18:08:35

标签: javascript jquery

美好的一天。

我需要检查一个字符串是否被更改了一个或多个字符。例如:

var string = "Orange"; //default
var string2 = "Orange"; // Equals
var string3 = "Oronge"; // orOnge just 1
var string4 = "Orongo"; // orOngO 2 or more.

verificar(string, string2); // return 2
verificar(string, string3); // return 0
verificar(string, string4); // return 1

function verificar(a, b){
 //Here I need the code which returns 0 if only one character is modified or 1 if it has been modified two or more characters, or 2 in case you have not changed anything.
}

有什么建议吗?

问候!

2 个答案:

答案 0 :(得分:1)

您正在寻找的是Levenshtein Distance

  

在信息理论和计算机科学中,Levenshtein距离是用于测量两个序列之间差异的字符串度量。非正式地说,两个单词之间的Levenshtein距离是将一个单词改为另一个单词所需的最小单字符编辑数(即插入,删除或替换)。

使用Google搜索很容易找到许多实现,例如this one

答案 1 :(得分:0)

如果a和b的长度相同,这应该可以完成工作。循环执行a,检查每个字符是否已更改,如果是,则添加到count。

function verificar(a, b){
    count = 0
    for (var i = 0; i < a.length; i ++) {
        if (a[i] != b[i]) { 
            count++
        }
    }
    if (count == 0) {
        return "Equal"
    }
    else if (count == 1) {
         return "1 change"
    }
    else {
        return "More than 1 change"
    }
} 

https://jsfiddle.net/gtqr3hx1/6/