9

如何用普通的 alf 替换 alf bel tanween

4

3 回答 3

5

我不知道 C#,但这更像是一个 UNICODE 问题。我会使用这个函数通过UNICODE 规范化来实现。

首先,归一化为分解形式。接下来,从 "Mark, Nonspacing" 类别[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

于 2011-01-13T16:27:06.247 回答
2

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

也可以看看:

于 2011-01-13T16:15:28.063 回答
1

感谢Bolo在搜索了几分钟后的启发,我这样做了:

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

        }

其中 x 是我的字符串

像那样,我从字符串中排除了ARABIC FATHATAN

于 2011-01-16T08:52:30.503 回答