Tengo esta aplicación de prueba en la que comparto lo que las personas escriben con la respuesta correcta. Por ahora, lo que hago es básicamente que:¿Cómo puedo ignorar los acentos al comparar cadenas en Perl?
if ($input =~ /$answer/i) {
print "you won";
}
Es agradable, como si la respuesta es "pescado" el usuario puede escribir "un pez" y ser contado una buena respuesta.
El problema que estoy enfrentando es que, bueno, mis usuarios son franceses, y me gustaría poder aceptar, por ejemplo, que un usuario escriba "taton", y la respuesta es "tâton".
Por lo tanto, lo que podría hacer, es:
use POSIX qw(locale_h);
use locale;
setlocale(LC_TYPE, "fr_FR.ISO8859-15");
setlocale(LC_COLLATE, "fr_FR.ISO8859-15");
Y en mi revisión de rutina, hacer un:
$input = lc($input);
$input =~ tr/àáâãäåçèéêëìíîïñòóôõöùúûüýÿ/aaaaaaceeeeiiiinooooouuuuyy/;
y algo del mismo modo con la respuesta.
No me gusta, porque tengo que codificar cosas, y el día que decida que me voy del mundo ISO-8859-15 para el mundo UTF-8, estoy condenado.
Por lo tanto, estoy buscando una manera de comparar cadenas, que hará que "tâton" eq "taton"
, "maçon" eq "macon"
o "macon" =~ /maçon/
sea cierto.
El inconveniente es que el usuario podría escribir: "gnomos egoístas" y seguirían siendo correctos. –
Era solo un ejemplo, y, bueno, también podían escribir todo el dictionnary cada vez :-) – mat
Es probable que desee algunos límites de palabras allí: m/\ b $ answer \ b/ –