2016-08-02 133 views
4

如何將字符串(如Příliš žluťoučký kůň úpěl ďábelské ódy.)轉換爲Prilis zlutoucky kun upel dabelske ody.如何從字符串中刪除變音符號(變音符號)?

源字符串採用Unicode,因此原則上應該可以使用規範化/分解來分隔元音變音。

不幸的是,我沒有在Pharo中看到任何庫(也許鋅隱藏在某處?),這將支持剝離變音符號或分解。

回答

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'" 
2

就我所知,並不存在這樣的算法,它可以做到這一點非常昂貴,所以你可能不想使用它們的Smalltalk實現。在我工作的公司,我們創建了一個虛擬機插件,可以調用libicu。這樣我們就不必保持單獨的實施並從原生速度獲利。請參閱ICU以供參考。

+0

性能是不是一個真正的問題,因爲我不打算將它應用到大規模數據集(我可以使用翻譯表,但這很容易出錯)。但是你的建議是爲'libicu'編寫一個UFFI庫? –

+0

是的,差不多。不幸的是,我們寫的插件是用於Squeak 4虛擬機,我不確定它是否可以輕鬆移植到新虛擬機。 –