0

这与

在 UTF8 Unicode 的排序规则下,哪些字符算作同一字符?什么 VB.net 函数可以用来合并它们?

这就是我计划这样做的方式:

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

KD 形式。

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

下一步将删除所有唯一目的是 tildaing 或重音字符的字符。

我怎么知道哪些角色是这样的?哪些字符只是“组合字符”

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

例如: 300 到 362 的字符可以去掉。

然后呢?

4

2 回答 2

3

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

于 2012-07-05T15:06:33.537 回答
2

对于字符串中的每个字符,调用GetUnicodeCategory并检查UnicodeCategory中的 NonSpacingMark、SpacingCombiningMark 或 EnclosureMark。

您可以使用正则表达式更有效地做到这一点,例如Regex.Replace(str, "\p{M}", "").

于 2012-07-06T14:06:42.670 回答