我有這個測驗應用程序,我匹配什麼人與正確的答案類型。現在,我要做的就是基本上是:如何在Perl中比較字符串時忽略重音符號?
if ($input =~ /$answer/i) {
print "you won";
}
這是很好的,因爲如果答案是「魚」,用戶可以輸入「魚」和算作一個很好的答案。
我面臨的問題是,我的用戶是法國人,而且我希望能夠接受用戶輸入「taton」,答案是「tâton」。
所以,我能做什麼,就是:
use POSIX qw(locale_h);
use locale;
setlocale(LC_TYPE, "fr_FR.ISO8859-15");
setlocale(LC_COLLATE, "fr_FR.ISO8859-15");
而在我的例行檢查,做了:
$input = lc($input);
$input =~ tr/àáâãäåçèéêëìíîïñòóôõöùúûüýÿ/aaaaaaceeeeiiiinooooouuuuyy/;
,並回答同樣的東西。
我不喜歡它,因爲我有硬編碼的東西,我決定有一天我要離開了ISO-8859-15世界爲UTF-8的世界裏,我是註定要失敗的。
所以,我正在尋找一種方法來比較字符串,這將使"tâton" eq "taton"
,"maçon" eq "macon"
或"macon" =~ /maçon/
爲真。
缺點是用戶可以鍵入:「自私的侏儒」,他們仍然是正確的。 – 2008-12-22 16:28:37