我的函数将用户输入与xml文件中的字符串进行比较但是如果有空格或拼写错误则返回false我希望它返回true如果差异是一个字符
//xml file like this
<xmlString>HELLO</xmlString>
<result>somthing</result>
和这样的脚本文件
var userInput="Jello";
if (userInput.toUpperCase().indexOf(xmlString) >= 0){ //this should return true and execute
return $(result).text();
}
我该怎么做?有没有我可以在jquery或任何其他框架中使用它的函数?
度过美好的一天:)
答案 0 :(得分:2)
https://en.wikipedia.org/wiki/Hamming_distance
在信息论中,两个弦之间的汉明距离 等长是相应的位置数 符号是不同的。
function hammingDistance(str1, str2) {
var dist = 0;
str1 = str1.toLowerCase();
str2 = str2.toLowerCase();
for (var i = 0, j = Math.max(str1.length, str2.length); i < j; i++) {
if (!str1[i] || !str2[i] || str1[i] !== str2[i]) {
dist++;
}
}
return dist;
}
你想允许一个不同的角色,所以你可以测试汉明距离是1还是以下。
if (hammingDistance("Jello", "HELLO") <= 1) {
// ...
}
答案 1 :(得分:1)
尝试使用模糊字符串匹配库,例如 https://github.com/xdrop/fuzzywuzzy
基于FuzzyWuzzy Python的Java模糊字符串匹配 算法。该算法使用Levenshtein距离进行计算 字符串之间的相似性。
答案 2 :(得分:0)
没有我能想到的框架。但是,你可以做的一件事就是自己做一个像这样的功能:
function findCloseMatch(input) {
var i = 0;
var numberOfMismatches = Math.ceil(input.length / 6);
while(i < input.length) {
// loop through xml entries {
if (input[i] != entry[i]) numberOfMismatches++;
// some if statement checking whether the match is better than the previous best one (maybe with number of matching chars)
}
}
}
编辑:上次失败,抱歉:)