Char.IsSymbol('%')不起作用

rea*_*Pro 0 c#

根据MS文档,这应该有效,但事实并非如此.

Char.IsSymbol('%')
Run Code Online (Sandbox Code Playgroud)

https://msdn.microsoft.com/en-us/library/system.char.issymbol(v=vs.110).aspx

Char.GetUnicodeCategory('%') == OtherPunctuation所以应该返回 IsSymbol.

Gab*_*uci 5

如果百分比符号的类别是OtherPunctuation,则它不属于文档所说的符号类别之一(MathSymbol、CurrencySymbol、ModifierSymbol 和 OtherSymbol)。


hne*_*atl 5

你使用的是百分比%(U + 0025),而不是文档实际提到的字符,?(U + 2105,"照顾".原来它实际上是一个很小的,不可读的"c/o",就像在字母上使用的那样):

Unicode标准中的符号是一组松散定义的字符,包括以下内容:

  • 货币符号.

  • 字母符号,包括一组数学字母数字符号以及符号,如℅,№和™.

此符号分类为OtherSymbol:

Char.GetUnicodeCategory('?') == OtherSymbol
Char.IsSymbol('?') == true
Run Code Online (Sandbox Code Playgroud)

百分比字符只是一个普通的标点字符,而不是符号:

Char.GetUnicodeCategory('%') == OtherPunctuation
Char.IsPunctuation('%') == true
Run Code Online (Sandbox Code Playgroud)