2016-08-02 27 views
4

Wie kann ich eine Zeichenfolge wie Příliš žluťoučký kůň úpěl ďábelské ódy. in Prilis zlutoucky kun upel dabelske ody. konvertieren?Wie kann ich Diakritika (Umlaute) von einem String entfernen?

Die Quellzeichenfolge ist in Unicode, daher sollte es prinzipiell möglich sein, die Umlaute durch Normalisierung/Zerlegung zu trennen.

Leider habe ich in Pharo keine Bibliothek gesehen (vielleicht Zink irgendwo versteckt?), Die entweder Umlaute oder Zersetzung unterstützen würde.

Antwort

4

Sie können versuchen, Diacriticals Paket

Installations

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

-Test

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

Es gibt nicht, soweit mir bekannt ist und der Algorithmus, der dies tun kann, sind ziemlich teuer, so dass Sie wahrscheinlich nicht Smalltalk-Implementierung von ihnen verwenden möchten. In der Firma, in der ich arbeite, haben wir ein VM-Plugin erstellt, das die Aufrufe von libicu aufruft. Auf diese Weise müssen wir keine separate Implementierung aufrechterhalten und profitieren von der Geschwindigkeit, mit der wir arbeiten. Siehe ICU als Referenz.

+0

Leistung nicht wirklich ein Problem ist, wie ich es nicht zu massiven Datenmengen werde anwenden (ich konnte Verwenden Sie eine Übersetzungstabelle, aber das ist ziemlich fehleranfällig). Aber was Sie vorschlagen, ist eine UFFI-Bibliothek für 'libicu' zu schreiben? –

+0

Ja, ziemlich. Leider ist das Plugin, das wir geschrieben haben, für die Squeak 4 VM und ich bin mir nicht sicher, wie gut es zu den neuen VMs portierbar ist. –