如何用普通的 alf 替换 alf bel tanween
3 回答
我不知道 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
。
看看这个项目,它提供了如何替换字符串中的 unicode 字符的示例:http: //www.codeproject.com/KB/string/FontGlyphSet.aspx
也可以看看:
感谢Bolo在搜索了几分钟后的启发,我这样做了:
string s = "";
foreach (Char c in x)
{
if (((int)c).ToString("x").ToLower() != "64b")
s += c.ToString();
}
其中 x 是我的字符串
像那样,我从字符串中排除了ARABIC FATHATAN