2011-01-13 13 views
7

Para sustituir el Tanween bel alf con un alf normalesárabe problema substituye أ con sólo ا

+1

¿Alguna razón para querer usar una expresión regular para esto? –

+1

Es posible que desee proporcionar información contextual adicional, como la forma de almacenar la cadena, etc. –

Respuesta

1

Gracias a enlightment de Bolo después de un par de minutos de búsqueda lo hice así:

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

     } 

donde x es mi cadena

Al igual que excluía a los ÁRABE FATHATAN de la cadena

4

No sé C#, pero eso es más una pregunta de UNICODE. Lo haría por medio de UNICODE normalization, usando this function.

Primero, se normaliza en forma descompuesta. A continuación, filtre todos los caracteres de la categoría "Marcar, No Espaciado" [Mn]. Finalmente, normaliza de nuevo a la forma compuesta.

Si veo correctamente, su glifo está representado en UNICODE por ARABIC LETTER ALEF WITH HAMZA ABOVE (U+0623, [Lo]) seguido de ARABIC FATHATAN (U+064B, [Mn]). El primer carácter se descompone para ARABIC LETTER ALEF (U+0627, [Lo]) + ARABIC HAMZA ABOVE (U+0654, [Mn]).

Aquí está la cadena de transformaciones (la primera flecha indica una descomposición, el segundo - filtrando Sin espacio marcas, el tercero - una composición):

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

Después de descomponer, eliminar todos los caracteres de la [Mn] categoría, y componer nuevamente, solo queda ARABIC LETTER ALEF.

+0

Utilizo este método para eliminar los signos diacríticos de los textos escritos con el alfabeto latino. Luego, necesito manejar un par de excepciones, como 'Ł', pero el método descrito cubre la mayoría de los casos. – Bolo

Cuestiones relacionadas