阿拉伯语问题用al替换أ

时间:2011-01-13 16:07:02

标签: c# regex unicode normalization unicode-normalization

如何使用普通alf

替换alf bel tanween

3 个答案:

答案 0 :(得分:4)

我不知道C#,但这更像是一个UNICODE问题。我会使用UNICODE normalization通过this function来完成。

首先,归一化为分解形式。接下来,过滤掉“标记,非间距”类别 [Mn] 中的所有字符。最后,归一化回组成形式。

如果我看得正确,您的字形在ARABIC LETTER ALEF WITH HAMZA ABOVEU+0623 [Lo] )后面跟ARABIC FATHATAN U+064B表示在UNICODE中}, [Mn] )。第一个字符分解为ARABIC LETTER ALEFU+0627 [Lo] )+ ARABIC HAMZA ABOVEU+0654 [Mn] )。

这是转换链(第一个箭头表示分解,第二个 - 过滤掉非间距标记,第三个 - 组合):

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

分解后,删除 [Mn] 类别中的所有字符,然后进行组合,只剩下ARABIC LETTER ALEF

答案 1 :(得分:2)

看一下这个项目,它提供了如何在字符串中替换unicode字符的示例:http://www.codeproject.com/KB/string/FontGlyphSet.aspx

另见:

答案 2 :(得分:1)

感谢Bolo的启发 经过几分钟的搜索,我就这样做了:

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

        }

其中x是我的字符串

就像我从字符串

中排除 ARABIC FATHATAN 一样