为什么*不被视为MathSymbol?

时间:2016-09-15 16:45:43

标签: c#

我正在回答这个question,一个人在帖子中评论说' *'也不是' - '不是MathSymbol。如果执行此c#,则返回false:

char.IsSymbol('*'); //false
char.IsSymbol('-'); //false

根据msdn

  

有效符号是以下类别的成员   UnicodeCategory:MathSymbol,CurrencySymbol,ModifierSymbol和   OtherSymbol。 Unicode标准中的符号是一个松散定义的集合   包含以下内容的字符:

我做了这个snippet来查看所有的MathSymbol,我发现星号和减号都明显存在。

      int ctr = 0;
      UnicodeCategory category = UnicodeCategory.MathSymbol;

      for (ushort codePoint = 0; codePoint < ushort.MaxValue; codePoint++) {
         Char ch = Convert.ToChar(codePoint);

         if (CharUnicodeInfo.GetUnicodeCategory(ch) == category) {
            if (ctr % 5 == 0)
               Console.WriteLine();
            Console.Write("{0} (U+{1:X4})     ", ch, codePoint);
            ctr++;
         } 
      }
      Console.WriteLine();
      Console.WriteLine("\n{0} characters are in the {1:G} category", 
                        ctr, category);   

我也想知道背后是否有原因,为什么这2个符号不被认为是MathSymbols?

3 个答案:

答案 0 :(得分:3)

Unicode Math Symbols are listed here

除非明确说明(否则)正常的ASCII字符'*'和' - '以及'/'不在此范围内,即使它们通常用于文本/编程语言来表示数学运算。

与“符号,数学”类别中包含的“+”字符不同,这些其他字符具有更多重载的用法/名称(例如星号,破折号,连字符),这使得它们被包含为广义数学可疑: Unicode字符属于单个类别。

答案 1 :(得分:2)

星号和连字符都不是数学符号,无论我们通常使用它们并理解它们的含义。

Unicode数学符号类似于×&#215;作为小数转义)

答案 2 :(得分:2)

js_的主要用途是标点符号(asterisk),*用作短划线或连字符。