是否可以使函数通过RegExp ex获得类似的字符串文本:
最大差异字母= 2或3个字母(+或-)就可以了
var text = 'Is it possible to get similar text in string by RegExp';
// and
similar_text(text , 'strong'); // => string
similar_text(text , 'posible'); // => possible
similar_text(text , 'isit'); // => Is it
// etc...
这是我的实现(需要Levenshtein函数)。不是最漂亮的,但是可以完成工作:
function similar_text(haystack, needle) {
let best_match = false;
let best_match_int = 9007199254740992;
let arr = haystack.split(" ");
haystack = haystack.toLowerCase();
needle = needle.toLowerCase();
for (let chunk = 1; chunk < arr.length; chunk++) {
for (let i = 0; i < arr.length; i++) {
if (i + chunk > arr.length)
continue;
let subStack = arr.slice(i, i + chunk).join(' ');
let l = new Levenshtein(needle, subStack);
if (l.distance < best_match_int) {
best_match = subStack;
best_match_int = l.distance;
}
}
}
return best_match;
}
这是一个Plunker演示如何完成此操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句