C# 与Java';s Character.isDefined,在.NET中?
Java有一个方法,但在.NET中的char类上没有等价的方法 我知道这一点,但如果我能避免的话,我不想依赖那个库 在.NET中有内置的等价物吗?还是组合调用所有可用的.is*方法会产生相同的结果?(例如char.IsLetter(x)| | char.IsSymbol(x)等)您可以尝试使用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
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'