如何验证 .NET 中包含不可见字符的 Unicode 字母

问题描述 投票:0回答:1

在 .NET 中,我有一个简单的行,断言字符串必须仅包含字母或数字

if (str.Any(c => !char.IsLetterOrDigit(c))
{
  throw new Exception();
}

问题是字符串可以是任何语言,并且某些 Unicode 字母由多个字符表示。例如,在土耳其语中,“i̇ş”包含“i”和结合上面的点来表示第一个字母。

因此,上述验证失败。我不想对不可见的 unicode 字符进行硬编码以跳过。我想要一个适用于所有语言的通用解决方案。

这个问题有什么解决办法吗?

c# .net validation unicode char
1个回答
0
投票

您可以跳过从

NonSpacingMark
返回的
char.GetUnicodeCategory(c)
类别。无需硬编码任何内容。

© www.soinside.com 2019 - 2024. All rights reserved.