如何从字符串中删除变音符号(变音符号)?

时间:2016-08-02 15:11:51

标签: smalltalk diacritics pharo

如何将字符串(例如Příliš žluťoučký kůň úpěl ďábelské ódy.)转换为Prilis zlutoucky kun upel dabelske ody.

源字符串是Unicode,因此原则上应该可以使用规范化/分解来分离变音符号。

不幸的是,我没有看到Pharo中的任何库(可能是某些地方隐藏了锌?),它们可以支持剥离变音符号或分解。

2 个答案:

答案 0 :(得分:4)

您可以尝试Diacriticals

安装

Metacello new
    smalltalkhubUser: 'Pharo' project: 'MetaRepoForPharo50';
    configuration: 'Diacritics';
    version: #development;
    load.

测试

'Příliš žluťoučký kůň úpěl ďábelské ódy' asNonDiacritical.
 "'Prilis zlutoucky kun upel dabelske ody'"

答案 1 :(得分:2)

据我所知,并没有能够做到这一点的算法非常昂贵,所以你可能不想使用它们的Smalltalk实现。在我工作的公司,我们创建了一个VM插件,可以调用libicu。这样我们就不必保持单独的实现并从本机速度中获利。请参阅https://swtch.com/~rsc/regexp/regexp1.html以供参考。