PlatonOrg / platon

Platform for Learning and Teaching Online: Open Source Education Platform
Other
8 stars 0 forks source link

Création de tag normalisation et réduction des doublons #223

Open nimdanor opened 21 hours ago

nimdanor commented 21 hours ago

Dans la création de tag nous allons avoir beaucoup de tags => il faut détecter si l'on ne fait pas un doublon.

Pour cela il faut une fonction de mesure de distance entre les mots en type script.

Un truc comme cela : function normalizeString(str: string): string { return str.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase(); }

function areStringsSimilar(str1: string, str2: string): boolean { const normalizedStr1 = normalizeString(str1); const normalizedStr2 = normalizeString(str2);

if (normalizedStr1 === normalizedStr2) {
    return true;
}

if (Math.abs(normalizedStr1.length - normalizedStr2.length) > 1) {
    return false;
}

let differences = 0;
let i = 0, j = 0;

while (i < normalizedStr1.length && j < normalizedStr2.length) {
    if (normalizedStr1[i] !== normalizedStr2[j]) {
        differences++;
        if (differences > 1) {
            return false;
        }
        if (normalizedStr1.length > normalizedStr2.length) {
            i++;
        } else if (normalizedStr1.length < normalizedStr2.length) {
            j++;
        } else {
            i++;
            j++;
        }
    } else {
        i++;
        j++;
    }
}

return differences + (normalizedStr1.length - i) + (normalizedStr2.length - j) <= 1;

}