6

Java 有一个Character.isDefined方法,但 .NET 中的 char 类没有等效方法。

我知道微软的旧 Java 库有这个,但如果我可以避免的话,我不想依赖那个库。

.NET 中是否有内置的等价物?还是组合调用所有可用的 .is* 方法会产生相同的结果?(例如 char.IsLetter(x) || char.IsSymbol(x) 等....)

4

1 回答 1

7

你可以试试

int utf32 = 0x1FFFF;
string surrogate = Char.ConvertFromUtf32(utf32);
var isDefined = char.GetUnicodeCategory(surrogate, 0) != UnicodeCategory.OtherNotAssigned;

char.GetUnicodeCategory(char)如果您有来自基本 BMP 的字符,则可以直接使用。

请注意,每个版本的 .NET 支持不同版本的 Unicode,因此它将返回的内容取决于当前版本的 .NET/当前操作系统使用的 Unicode 版本。

于 2013-09-06T09:05:07.403 回答