当前位置:  开发笔记 > 编程语言 > 正文

在比较Perl中的字符串时,如何忽略重音?

如何解决《在比较Perl中的字符串时,如何忽略重音?》经验,为你挑选了1个好方法。

我有这个测验应用程序,我匹配人们输入的正确答案.就目前而言,我所做的基本上是:

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/是真实的.



1> mjy..:

试试文本:: Unaccent从CPAN(或模块文本:: Unaccent :: PurePerl).

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有