如何从字符串中删除变音符号(变音符号)?
How can I remove diacritics (umlauts) from a String?
如何将字符串(例如 Příliš žluťoučký kůň úpěl ďábelské ódy.
转换为 Prilis zlutoucky kun upel dabelske ody.
?
源字符串是Unicode,所以原则上应该可以使用normalization/decomposition来分隔元音。
不幸的是,我没有在 Pharo 中看到任何支持剥离变音符号或分解的库(也许 Zinc 隐藏在某处?)。
据我所知并没有,并且可以执行此操作的算法非常昂贵,因此您可能不想使用它们的 Smalltalk 实现。在我工作的公司,我们创建了一个 VM 插件来调用 libicu。这样我们就不必维护单独的实现并从本机速度中获益。请参阅 ICU 以供参考。
你可以试试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'"
如何将字符串(例如 Příliš žluťoučký kůň úpěl ďábelské ódy.
转换为 Prilis zlutoucky kun upel dabelske ody.
?
源字符串是Unicode,所以原则上应该可以使用normalization/decomposition来分隔元音。
不幸的是,我没有在 Pharo 中看到任何支持剥离变音符号或分解的库(也许 Zinc 隐藏在某处?)。
据我所知并没有,并且可以执行此操作的算法非常昂贵,因此您可能不想使用它们的 Smalltalk 实现。在我工作的公司,我们创建了一个 VM 插件来调用 libicu。这样我们就不必维护单独的实现并从本机速度中获益。请参阅 ICU 以供参考。
你可以试试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'"