Как заменить ALF бел tanween с нормальным ALFArabic Проблема Заменить أ только с ا
ответ
Благодаря просветительским Бола в после нескольких минут поиска я сделал это так:
string s = "";
foreach (Char c in x)
{
if (((int)c).ToString("x").ToLower() != "64b")
s += c.ToString();
}
где х моей строка
Как я исключал ARABIC FATHATAN из строка
Взгляните на этот проект, который дает примеры того, как заменить символы Юникода в строках: http://www.codeproject.com/KB/string/FontGlyphSet.aspx
Смотри также :
Я не знаю 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
.
Я использую этот метод для удаления диакритических знаков из текстов, написанных с использованием латинского алфавита. Затем мне нужно обработать несколько исключений, например 'Ł', но описанный метод охватывает большинство случаев. – Bolo
Есть ли причина, по которой вы хотите использовать регулярное выражение? –
Возможно, вам понадобится дополнительная дополнительная контекстная информация, например, как вы храните строку и т. Д. –