2016-08-02 1 views
4

Comment puis-je convertir une chaîne, telle que Příliš žluťoučký kůň úpěl ďábelské ódy. en Prilis zlutoucky kun upel dabelske ody.? La chaîne source est en Unicode, donc en principe, il devrait être possible d'utiliser la normalisation/décomposition pour séparer le tréma.Comment puis-je supprimer les signes diacritiques (trémas) d'une chaîne?

Malheureusement, je n'ai vu aucune bibliothèque dans Pharo (peut-être Zinc caché quelque part?) Qui supporterait soit le décapage des trémas, soit la décomposition.

Répondre

4

Vous pouvez essayer Diacriticals package

Installation

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

Il n'y a pas, autant que je sache et l'algorithme qui peut faire cela sont assez coûteux, donc vous ne voudrez probablement pas utiliser leur implémentation Smalltalk. Dans l'entreprise où je travaille, nous avons créé un plugin VM qui fait les appels à libicu. De cette façon, nous ne devons pas maintenir une implémentation séparée et profiter de la vitesse native. Voir ICU pour référence.

+0

Performance est pas vraiment un problème, car je ne vais pas l'appliquer à des ensembles de données massives (je pourrais utilisez une table de traduction, mais c'est assez sujet à erreur). Mais ce que vous suggérez est d'écrire une bibliothèque UFFI pour 'libicu'? –

+0

Oui, à peu près. Malheureusement, le plugin que nous avons écrit est pour la VM Squeak 4 et je ne suis pas sûr à quel point il est portable à la nouvelle VM. –