nhb-toolbox
Version:
A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.
35 lines (34 loc) • 1.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getLevenshteinDistance = exports.extractNumbersFromString = void 0;
exports.countWords = countWords;
const extractNumbersFromString = (input) => {
return (input.match(/\d+/g) || [])?.map(Number);
};
exports.extractNumbersFromString = extractNumbersFromString;
const getLevenshteinDistance = (str1, str2) => {
if (str1 === str2)
return 0;
const lenA = str1?.length;
const lenB = str2?.length;
if (lenA < lenB) {
return (0, exports.getLevenshteinDistance)(str2, str1);
}
let prev = Array.from({ length: lenB + 1 }, (_, j) => j);
let curr = new Array(lenB + 1);
for (let i = 1; i <= lenA; i++) {
curr[0] = i;
for (let j = 1; j <= lenB; j++) {
curr[j] =
str1[i - 1] === str2[j - 1]
? prev[j - 1]
: 1 + Math.min(prev[j], curr[j - 1], prev[j - 1]);
}
[prev, curr] = [curr, prev];
}
return prev[lenB];
};
exports.getLevenshteinDistance = getLevenshteinDistance;
function countWords(text) {
return (text?.match(/\p{L}[\p{L}\p{M}\p{Pd}'’]*|\p{N}+/gu) || [])?.length;
}