2011-01-13 3 views
7

Comment remplacer le bel ALF Tanween avec une alf normalearabe Problème Remplacer أ avec juste ا

+1

Une raison de vouloir utiliser une regex pour cela? –

+1

Vous pouvez fournir des informations contextuelles supplémentaires telles que la façon dont vous stockez la chaîne, etc. –

Répondre

1

Merci à la enlightment Bolo après quelques minutes de recherche je l'ai fait comme ça:

string s = ""; 
     foreach (Char c in x) 
     { 
      if (((int)c).ToString("x").ToLower() != "64b") 
       s += c.ToString(); 

     } 

où x est ma chaîne

Comme j'Exclue la ARABE FATHATAN de la chaîne

4

Je ne connais pas C#, mais c'est plutôt une question UNICODE. Je le ferais au moyen de UNICODE normalization, en utilisant this function.

D'abord, normaliser à la forme décomposée. Ensuite, filtrez tous les caractères de la catégorie "Marquer, Non-Espacé" [Mn]. Enfin, retournez à la forme composée.

Si je vois bien, votre glyphe est représenté dans UNICODE par ARABIC LETTER ALEF WITH HAMZA ABOVE (U+0623, [Lo]) suivie ARABIC FATHATAN (U+064B, [Mn]). Le premier caractère se décompose en ARABIC LETTER ALEF (U+0627, [Lo]) + ARABIC HAMZA ABOVE (U+0654, [Mn]).

est ici la chaîne de transformations (la première flèche indique une décomposition, le second - le filtrage des marques sans chasse, la troisième - une composition):

U+0623 + U+064B → U+0627 + U+0654 + U+064B → U+0627 → U+0627 

Une fois que vous décomposez, supprimer tous les caractères de la [Mn] catégorie, et composer de retour, vous êtes à gauche avec ARABIC LETTER ALEF seulement.

+0

J'utilise cette méthode pour supprimer les signes diacritiques des textes écrits en alphabet latin. Ensuite, j'ai besoin de gérer quelques exceptions, comme 'Ł', mais la méthode décrite couvre la plupart des cas. – Bolo