2011-01-13 15 views
7

Come sostituire il tanween bel alf con un alf normalearabo Problema Sostituire أ con appena ا

+1

Qualche motivo per voler utilizzare una regex per questo? –

+1

Si potrebbe desiderare di fornire alcune informazioni contestuali aggiuntive come il modo in cui si memorizza la stringa, ecc. –

risposta

1

Grazie alla enlightment di Bolo dopo un paio di minuti di ricerche ho fatto così:

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

     } 

dove x è la mia stringa

Come che ho escluso il ARABO FATHATAN da la stringa

4

Non conosco C#, ma è più una domanda UNICODE. Lo farei per mezzo di UNICODE normalization, usando this function.

Innanzitutto, normalizzare in forma decomposta. Successivamente, filtra tutti i caratteri della categoria "Segna, non ordinata" [Mn]. Infine, normalizza di nuovo alla forma composta.

Se vedo correttamente, il glifo è rappresentato in Unicode ARABIC LETTER ALEF WITH HAMZA ABOVE (U+0623, [Lo]) seguito da ARABIC FATHATAN (U+064B, [Mn]). Il primo carattere decompone a ARABIC LETTER ALEF (U+0627, [Lo]) + ARABIC HAMZA ABOVE (U+0654, [Mn]).

Ecco la catena di trasformazioni (la prima freccia indica una decomposizione, la seconda - filtrando senza spaziatura marchi, il terzo - una composizione):

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

Dopo aver decompongono, rimuovere tutti i caratteri dalla [Mn] categoria, e comporre indietro, ti rimane solo con ARABIC LETTER ALEF.

+0

Io uso questo metodo per rimuovere i segni diacritici dai testi scritti usando l'alfabeto latino. Successivamente, ho bisogno di gestire un paio di eccezioni, come 'Ł', ma il metodo descritto copre la maggior parte dei casi. – Bolo