Bonsoir,
Je comprends votre souci. Pour permettre une vérification plus flexible, vous pouvez utiliser des expressions régulières (regex) ou comparer des chaînes de caractères en ignorant les majuscules/minuscules et en permettant de petites erreurs. Voici une version améliorée de votre fonction Verif
: the official rice purity test
javascript
function Verif() {
var rep = document.getElementById('zoneSaisie').value.trim().toLowerCase();
var titreNormalise = titre.trim().toLowerCase();
var pattern = new RegExp(titreNormalise, 'i');
if (pattern.test(rep)) {
alert("Bravo");
} else {
alert("Réessaye ! ⚠ Et attention à l'orthographe ☺");
}
}
Dans cet exemple, nous utilisons trim()
pour supprimer les espaces en début et en fin de chaîne, et toLowerCase()
pour normaliser les majuscules/minuscules. Ensuite, nous créons une expression régulière avec le titre attendu et vérifions si la réponse de l'utilisateur correspond à cette expression.
Si vous souhaitez permettre encore plus de flexibilité, par exemple en acceptant des réponses partiellement correctes, vous pouvez comparer les chaînes de caractères en utilisant une fonction de distance de Levenshtein qui mesure la différence entre deux chaînes de caractères. Voici un exemple de fonction de calcul de distance de Levenshtein :
javascript
function levenshtein(a, b) {
var tmp;
if (a.length === 0) { return b.length; }
if (b.length === 0) { return a.length; }
if (a.length > b.length) { tmp = a; a = b; b = tmp; }
var i, j, res, alen = a.length, blen = b.length, row = Array(alen);
for (i = 0; i <= alen; i++) { row[i] = i; }
for (i = 1; i <= blen; i++) {
res = i;
for (j = 1; j <= alen; j++) {
tmp = row[j - 1];
row[j - 1] = res;
res = b[i - 1] === a[j - 1] ? tmp : Math.min(tmp + 1, Math.min(res + 1, row[j] + 1));
}
}
return res;
}
function Verif() {
var rep = document.getElementById('zoneSaisie').value.trim().toLowerCase();
var titreNormalise = titre.trim().toLowerCase();
var distance = levenshtein(rep, titreNormalise);
var threshold = 3;
if (distance <= threshold) {
alert("Bravo");
} else {
alert("Réessaye ! ⚠ Et attention à l'orthographe ☺");
}
}
Dans cet exemple, la fonction levenshtein
calcule la distance de Levenshtein entre les deux chaînes, et nous définissons un seuil (threshold
) pour le nombre maximum d'erreurs acceptées.
J'espère que cela vous aide à rendre votre blind test plus interactif et tolérant aux petites erreurs de saisie.
Cordialement,