2010-08-23 8 views
2

Dans mon application VB.NET, je compare des mots qui sont enregistrés en utilisant IPA, dont beaucoup ont de nombreux signes diacritiques. Dans l'une des comparaisons, je compare les mots caractère par caractère. Mais quand j'itérer sur les personnages, les signes diacritiques sortent comme des personnages séparés (comme j'attendre puisque c'est unicode):Traiter un caractère Unicode plus diacritique comme un seul caractère?

o`ku`ku` 

Cependant, caractère au est différent de celui au plus un accent pour les besoins de la présente programme et doit être distingué.

Existe-t-il un bon moyen d'itérer sur les chaînes Unicode de sorte que les caractères et leurs accents soient considérés comme un caractère? J'essaie d'éviter d'avoir à coder en dur toutes les combinaisons qui se combinent pour être considérées comme un seul caractère.

Edit:

La méthode Normaliser() fonctionne pour les caractères avec des signes diacritiques simples qui ont une représentation unicode un seul caractère, comme les voyelles les plus accentuées. Cependant, cela ne fonctionne pas pour les symboles plus obscurs, comme et .

Répondre

3

C'est ce que string.Normalize() prend en charge. Vous pouvez utiliser le remplacement Normalize (NormalizationForm) pour le contrôler explicitement.

+0

Cela fonctionne pour les marques d'accents simples, mais certains des caractères IPA les plus compliqués ne sont pas combinés (parce qu'il n'y a pas de représentation d'un seul caractère pour eux). Par exemple, le modificateur does n'est pas combiné. Je vais mettre à jour ma question pour refléter cela. – davidscolgan

+0

Comment cela pourrait-il être un problème? Les mots que vous essayez de comparer n'auront pas non plus le glyphe de combinaison. –

+0

Le problème est que les glyphes de combinaison sont des informations importantes pour les besoins de ce programme, et ne pas les avoir modifiés les calculs. ɔ est un caractère complètement différent de ɔ. – davidscolgan

Questions connexes