2011-01-13 13 views
7

Wie die alf bel tanween mit einem normalen alf an diesem ProjektArabisch Problem ersetzen أ mit nur ا

+1

Irgendwelche Gründe dafür, eine Regex dafür zu benutzen? –

+1

Vielleicht möchten Sie zusätzliche kontextbezogene Informationen bereitstellen, z. B. wie Sie die Zeichenfolge speichern usw. –

Antwort

1

Dank Bolo des Erleuchtungs nach ein paar Minuten des Suchens ich habe es wie folgt aus:

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

     } 

wo x mein String

, dass ich ausgeschlossen die ARABISCHE Fathatan aus die Zeichenkette

4

Ich weiß nicht C#, aber das ist mehr eine UNICODE Frage. Ich würde es mittels UNICODE normalization, unter Verwendung this function tun.

Zuerst normalisieren, zerlegt Form. Als nächstes filtern Sie alle Zeichen aus der Kategorie "Mark, Nonspacing" [Mn]. Zum Schluss normalisieren Sie sich wieder auf das Formular.

Wenn ich sehe, richtig, wird Ihr Glyphe in UNICODE vertreten durch ARABIC LETTER ALEF WITH HAMZA ABOVE (U+0623, [Lo]), gefolgt von ARABIC FATHATAN (U+064B, [Mn]). Das erste Zeichen zersetzt zu ARABIC LETTER ALEF (U+0627, [Lo]) + ARABIC HAMZA ABOVE (U+0654, [Mn]).

Hier ist die Kette von Transformationen (der erste Pfeil zeigt eine Zersetzung, die zweite - Ausfiltern Marken Ohne Zwischenraum, der dritte - eine Komposition):

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

Nachdem Sie zersetzen, entfernen Sie alle Zeichen aus dem [Mn] Kategorie, und komponieren zurück, Sie sind nur mit ARABIC LETTER ALEF übrig.

+0

Ich verwende diese Methode, um diakritische Zeichen aus lateinischen Buchstaben zu entfernen. Als nächstes muss ich ein paar Ausnahmen behandeln, wie "£", aber die beschriebene Methode deckt die meisten Fälle ab. – Bolo