使用tr运算符删除perl的重音符号

时间:2014-12-15 21:07:19

标签: perl unicode ascii

我试图通过运行perl脚本来删除我的文本中的重音符号,其中我使用了tr运算符(我找到的更简单的方法):

我试过了:

tr/àâäéèëêîïôöûùüç/aaaeeeeiioouuuc/;

它删除了重音,但我得到了角色' aa'而不是',' ae'而不是'等等。

1 个答案:

答案 0 :(得分:7)

最好使用像Text::Undiacritic =)

这样的合适模块
#!/usr/bin/perl
use warnings;
use strict;
use utf8;
binmode(STDIN, ":utf8");
binmode(STDOUT, ":utf8");
binmode(STDERR, ":utf8");

use Text::Undiacritic qw(undiacritic);

my $string = "C'est l'été à Paris ?\n";
print undiacritic $string;

输出:

C'est l'ete a Paris ?

注意

就您使用重音提示字符串而言,undiacritic()将删除重音,但不会在typographic ligature上按示例运行。如果你传递字符串

C'est l'été à Paris Lætitia ?

它不会替代æ

欢迎来到真正棘手的世界:Unicode-UTF8。 A good pointer