C# 与Java';s Character.isDefined,在.NET中?

C# 与Java';s Character.isDefined,在.NET中?,c#,java,.net,C#,Java,.net,Java有一个方法,但在.NET中的char类上没有等价的方法 我知道这一点,但如果我能避免的话,我不想依赖那个库 在.NET中有内置的等价物吗?还是组合调用所有可用的.is*方法会产生相同的结果?(例如char.IsLetter(x)| | char.IsSymbol(x)等)您可以尝试使用 int utf32 = 0x1FFFF; string surrogate = Char.ConvertFromUtf32(utf32); var isDefined = char.GetUnicodeC

Java有一个方法,但在.NET中的char类上没有等价的方法

我知道这一点,但如果我能避免的话,我不想依赖那个库

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

您可以尝试使用

int utf32 = 0x1FFFF;
string surrogate = Char.ConvertFromUtf32(utf32);
var isDefined = char.GetUnicodeCategory(surrogate, 0) != UnicodeCategory.OtherNotAssigned;
如果您有来自基本BMP的字符,则可以直接使用
char.getUnicodeTegory(char)


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

非常好,这看起来它非常接近地再现了这种行为,谢谢!char.TryParse(firstChar.ToString(),out firstChar)会给出正确的结果吗?@RohitGarg
char.TryParse
不会检查
char
的Unicode“有效性”。它只是将
字符串
转换为
字符
。这是毫无用处的
char.TryParse(“A”,out ch)
返回
'A'
,但显然更直接的是
“A”[0]=='A'