相关疑难解决方法(0)

如何在perl中匹配字符串与变音符号?

例如,匹配"民族报"在""国际化"没有额外的模块,是否有可能在新的Perl版本(5.14,5.15等)?

我找到了答案!感谢tchrist

与UCA匹配的Rigth解决方案(thnx到/sf/users/32989071/).

# found start/end offsets for matched utf-substring (without intersections)
use 5.014;
use strict; 
use warnings;
use utf8;
use Unicode::Collate;
binmode STDOUT, ':encoding(UTF-8)';
my $str  = "Îñ?érñå?îöñå?îžå?îöñ" x 2;
my $look = "Nation";
my $Collator = Unicode::Collate->new(
    normalization => undef, level => 1
   );

my @match = $Collator->match($str, $look);
if (@match) {
    my $found = $match[0];
    my $f_len  = length($found);
    say "match result: $found (length is $f_len)"; 
    my $offset = 0;
    while ((my $start = …
Run Code Online (Sandbox Code Playgroud)

regex unicode perl collation

23
推荐指数
2
解决办法
3049
查看次数

如何在Perl中用ASCII替换Unicode字符?

我可以在vim中这样做:

:%s/\%u2013/-/g
Run Code Online (Sandbox Code Playgroud)

我如何在Perl中执行等效操作?我以为这会做到但它似乎没有起作用:

perl -i -pe 's/\x{2013}/-/g' my.dat
Run Code Online (Sandbox Code Playgroud)

unicode perl utf-8

13
推荐指数
1
解决办法
2万
查看次数

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

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

if ($input =~ /$answer/i) {
     print "you won";
}
Run Code Online (Sandbox Code Playgroud)

这很好,好像答案是"鱼",用户可以输入"一条鱼"并被认为是一个很好的答案.

我面临的问题是,我的用户因为我是法国人,我希望能够接受用户输入"taton",答案是"tâton".

那么,我能做的是:

use POSIX qw(locale_h);
use locale;
setlocale(LC_TYPE, "fr_FR.ISO8859-15");
setlocale(LC_COLLATE, "fr_FR.ISO8859-15");
Run Code Online (Sandbox Code Playgroud)

在我的检查程序中,做一个:

$input = lc($input);
$input =~ tr/àáâãäåçèéêëìíîïñòóôõöùúûüýÿ/aaaaaaceeeeiiiinooooouuuuyy/;
Run Code Online (Sandbox Code Playgroud)

还有同样的答案.

我不喜欢它,因为我必须硬编码,而当我决定我将离开ISO-8859-15世界的UTF-8世界时,我注定要失败.

所以,我正在寻找一种方式来比较字符串,这将使"tâton" eq "taton","maçon" eq "macon"或者"macon" =~ /maçon/是真实的.

string perl comparison diacritics

9
推荐指数
1
解决办法
2174
查看次数

如何将扩展拉丁字符更改为其非重音ASCII等效字符?

我需要一个通用的音译或替换正则表达式,它将扩展的拉丁字符映射到类似的ASCII字符,并将所有其他扩展字符映射到''(空字符串),以便......

  • é变成了e

  • ê成为e

  • á成为一个

  • ç变成c

  • Ď成为D.

等等,但是像‡或Ω或‰这样的东西只是被条纹化了.

regex perl

6
推荐指数
2
解决办法
2903
查看次数

删除重音字符的重音符号

我正在寻找建议我应该使用哪些库和/或函数将国际文本转换为它的英文字符替代品.

例如

Vous avez aimé l'épée offerte par les elfes à Frodon 
Run Code Online (Sandbox Code Playgroud)

转换成

Vous avez aime l'epee offerte par les elfes a Frodon 
Run Code Online (Sandbox Code Playgroud)

perl

3
推荐指数
1
解决办法
7739
查看次数

标签 统计

perl ×5

regex ×2

unicode ×2

collation ×1

comparison ×1

diacritics ×1

string ×1

utf-8 ×1