如何将字符串(如Příliš žluťoučký kůň úpěl ďábelské ódy.
)转换为Prilis zlutoucky kun upel dabelske ody.
?如何从字符串中删除变音符号(变音符号)?
源字符串采用Unicode,因此原则上应该可以使用规范化/分解来分隔元音变音。
不幸的是,我没有在Pharo中看到任何库(也许锌隐藏在某处?),这将支持剥离变音符号或分解。
如何将字符串(如Příliš žluťoučký kůň úpěl ďábelské ódy.
)转换为Prilis zlutoucky kun upel dabelske ody.
?如何从字符串中删除变音符号(变音符号)?
源字符串采用Unicode,因此原则上应该可以使用规范化/分解来分隔元音变音。
不幸的是,我没有在Pharo中看到任何库(也许锌隐藏在某处?),这将支持剥离变音符号或分解。
您可以尝试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'"
就我所知,并不存在这样的算法,它可以做到这一点非常昂贵,所以你可能不想使用它们的Smalltalk实现。在我工作的公司,我们创建了一个虚拟机插件,可以调用libicu。这样我们就不必保持单独的实施并从原生速度获利。请参阅ICU以供参考。
性能是不是一个真正的问题,因为我不打算将它应用到大规模数据集(我可以使用翻译表,但这很容易出错)。但是你的建议是为'libicu'编写一个UFFI库? –
是的,差不多。不幸的是,我们写的插件是用于Squeak 4虚拟机,我不确定它是否可以轻松移植到新虚拟机。 –