Come sostituire il tanween bel alf con un alf normalearabo Problema Sostituire أ con appena ا
risposta
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
Date un'occhiata a questo progetto che fornisce esempi di come sostituire i caratteri Unicode in stringhe: http://www.codeproject.com/KB/string/FontGlyphSet.aspx
Vedi anche :
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
.
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
Qualche motivo per voler utilizzare una regex per questo? –
Si potrebbe desiderare di fornire alcune informazioni contestuali aggiuntive come il modo in cui si memorizza la stringa, ecc. –