2011-01-13 4 views
7

Как заменить ALF бел tanween с нормальным ALFArabic Проблема Заменить أ только с ا

+1

Есть ли причина, по которой вы хотите использовать регулярное выражение? –

+1

Возможно, вам понадобится дополнительная дополнительная контекстная информация, например, как вы храните строку и т. Д. –

ответ

1

Благодаря просветительским Бола в после нескольких минут поиска я сделал это так:

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

     } 

где х моей строка

Как я исключал ARABIC FATHATAN из строка

4

Я не знаю C#, но это еще вопрос UNICODE. Я бы сделал это с помощью UNICODE normalization, используя this function.

Во-первых, нормализовать в разложенную форму. Затем отфильтруйте все символы из категории «Mark, Nonspace» [Mn]. Наконец, нормализуйте назад к сложенной форме.

Если я вижу правильно, ваш глиф представлен в UNICODE по ARABIC LETTER ALEF WITH HAMZA ABOVE (U+0623, [Lo]) с последующим ARABIC FATHATAN (U+064B, [Mn]). Первый символ разлагается на ARABIC LETTER ALEF (U+0627, [Lo]) + ARABIC HAMZA ABOVE (U+0654, [Mn]).

Вот цепочка преобразований (первая стрелка указывает на разложение, второй - отфильтровывая непробельные метки, третий - композиция):

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

После разлагаются, удалить все символы из [Mn], и составьте назад, вы остаетесь только с ARABIC LETTER ALEF.

+0

Я использую этот метод для удаления диакритических знаков из текстов, написанных с использованием латинского алфавита. Затем мне нужно обработать несколько исключений, например 'Ł', но описанный метод охватывает большинство случаев. – Bolo