如何使用普通alf
替换alf bel tanween答案 0 :(得分:4)
我不知道C#,但这更像是一个UNICODE问题。我会使用UNICODE normalization通过this function来完成。
首先,归一化为分解形式。接下来,过滤掉“标记,非间距”类别 [Mn] 中的所有字符。最后,归一化回组成形式。
如果我看得正确,您的字形在ARABIC LETTER ALEF WITH HAMZA ABOVE
(U+0623, [Lo] )后面跟ARABIC FATHATAN
U+064B表示在UNICODE中}, [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
。
答案 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 一样