哪些Unicode字符是“组合”字符(其唯一目的是添加重音,tilda)?

时间:2012-07-05 08:02:03

标签: vb.net unicode

这与

有关

What are the characters that count as the same character under collation of UTF8 Unicode? And what VB.net function can be used to merge them?

我打算这样做:

使用http://msdn.microsoft.com/en-us/library/dd374126%28v=vs.85%29.aspx将字符串转换为

KD表格。

基本上它会将大多数变体(如上标)转换为正常数字。它还将tilda和重音分解为2个字符。

下一步是删除所有字符,其唯一目的是修饰或强调字符。

我如何知道哪些字符是这样的?哪些字符只是“组成字符”

我如何找到这样的角色?找到后,我该如何摆脱它?我应该逐个字符地扫描并删除所有这样的“组合字符吗?”

例如: 从300到362的角色可以摆脱。

然后是什么?

2 个答案:

答案 0 :(得分:3)

组合字符在UnicodeData.txt中列为具有非零Canonical_Combining_Class,以及General_Category为Mn(Mark,nonspacing)。

答案 1 :(得分:2)

对于字符串中的每个字符,请调用GetUnicodeCategory并检查UnicodeCategory是否存在NonSpacingMark,SpacingCombiningMark或EnclosingMark。

您可以使用正则表达式更有效地执行此操作,例如Regex.Replace(str, "\p{M}", "")