如何將字符串(如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虛擬機,我不確定它是否可以輕鬆移植到新虛擬機。 –