Java 有一个Character.isDefined方法,但 .NET 中的 char 类没有等效方法。
我知道微软的旧 Java 库有这个,但如果我可以避免的话,我不想依赖那个库。
.NET 中是否有内置的等价物?还是组合调用所有可用的 .is* 方法会产生相同的结果?(例如 char.IsLetter(x) || char.IsSymbol(x) 等....)
Java 有一个Character.isDefined方法,但 .NET 中的 char 类没有等效方法。
我知道微软的旧 Java 库有这个,但如果我可以避免的话,我不想依赖那个库。
.NET 中是否有内置的等价物?还是组合调用所有可用的 .is* 方法会产生相同的结果?(例如 char.IsLetter(x) || char.IsSymbol(x) 等....)
你可以试试
int utf32 = 0x1FFFF;
string surrogate = Char.ConvertFromUtf32(utf32);
var isDefined = char.GetUnicodeCategory(surrogate, 0) != UnicodeCategory.OtherNotAssigned;
char.GetUnicodeCategory(char)
如果您有来自基本 BMP 的字符,则可以直接使用。
请注意,每个版本的 .NET 支持不同版本的 Unicode,因此它将返回的内容取决于当前版本的 .NET/当前操作系统使用的 Unicode 版本。