Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查大数字是否为有效的Unicode字符_C#_Unicode_Char - Fatal编程技术网

C# 检查大数字是否为有效的Unicode字符

C# 检查大数字是否为有效的Unicode字符,c#,unicode,char,C#,Unicode,Char,我想检查一个大的数字是否是一个有效的Unicode字符。我查看了Char.IsSymbol(Char)函数,但它需要一个Char作为输入。我需要的是Char.IsSymbol(int)的等价物。例如:Char.IsSymbol(340813)char是C#中的一种16位类型,表示一个代码单元,因此它可以存储的最大值是65535,并且char.IsSymbol(340813)不起作用 要检查代码点是否为符号,必须将代码点转换为字符串并调用。要获取字符串,请使用“将指定的Unicode代码点转换为U

我想检查一个大的数字是否是一个有效的Unicode字符。我查看了
Char.IsSymbol(Char)
函数,但它需要一个Char作为输入。我需要的是Char.IsSymbol(int)的等价物。例如:
Char.IsSymbol(340813)
char
是C#中的一种16位类型,表示一个代码单元,因此它可以存储的最大值是65535,并且
char.IsSymbol(340813)
不起作用

要检查代码点是否为符号,必须将代码点转换为字符串并调用。要获取字符串,请使用“将指定的Unicode代码点转换为UTF-16编码字符串”

检查代码点是否有效更容易,因为Unicode字符的最大值为0x10FFFF。原因如下:


这意味着您只需要一个简单的
if(codepoint
Char.IsSymbol(Convert.ToChar(340813))
但是340813不是一个有效的unicode字符。我试过了。我得到了一个溢出错误。值太大(我使用的值是340736)。我不认为OP试图检查字符代码是否是一个符号(在术语的unicode含义中),而是试图确定字符代码是否是有效的Unicode字符-尽管我当然可能是错的。@MatthewWatson我也这么想,并写了一部分关于检查有效代码点,然后在我重新阅读问题后发布之前删除它
Char.ConvertFromUtf32(Int32)
也可以用于检查有效性,如果是这样的话,那么仍然比我建议的要好(但仍然会遇到引发异常的开销问题)。无论如何,这显然是一个更好的答案,所以我删除了我的答案。:)嗨,谢谢大家的帮助。我试过建议的解决办法,但得到了一个奇怪的结果。我正在尝试使用值21152和字符串ch=Char.ConvertFromUtf32(num)的代码;返回一个汉字,表示它是一个有效的UNICODE符号,但函数Char.IsSymbol(ch,0)返回false。
int codepoint = 340813;
string character = Char.ConvertFromUtf32(codepoint);
return IsSymbol(character, 0);
bool isValidUnicodeCharacter = codepoint <= 0x10FFFF && 
                               (codepoint < 0xD800 || codepoint > 0xDFFF)