Арабский Проблема Заменить just просто ا - PullRequest
7 голосов
/ 13 января 2011

Как заменить верхнюю часть на обычную

Ответы [ 3 ]

4 голосов
/ 13 января 2011

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

Сначала нормализуем до разложенной формы. Далее отфильтровываем всех персонажей из категории «Марка без пробелов» [Mn] . Наконец, вернитесь к составленной форме.

Если я правильно вижу, ваш глиф представлен в ЮНИКОДЕ как 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.

2 голосов
/ 13 января 2011

Взгляните на этот проект, в котором приведены примеры замены символов Юникода в строках: http://www.codeproject.com/KB/string/FontGlyphSet.aspx

См. Также:

1 голос
/ 16 января 2011

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

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

        }

где x - моя строка

Таким образом, я исключил арабский фатан из строки

...