删除重音字符的重音符号

Ωme*_*ega 3 perl

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

例如

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)

fri*_*edo 13

首先,您可以使用Unicode :: Normalize分解字符,然后您可以使用简单的正则表达式删除所有变音符号.(我想简单地抓住所有非间距标记字符应该这样做,但可能有一两个不起眼的例外.)

这是一个例子:

use strict;
use warnings;
use utf8;

use Unicode::Normalize;

my $test = "Vous avez aimé l'épée offerte par les elfes à Frodon";

my $decomposed = NFKD( $test );
$decomposed =~ s/\p{NonspacingMark}//g;

print $decomposed;
Run Code Online (Sandbox Code Playgroud)

输出:

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

  • `Etüde` >> `EtA1_4de` :-/ (2认同)

归档时间:

查看次数:

7739 次

最近记录:

12 年,12 月 前