【问题标题】:Why is the * is not considered a MathSymbol? [duplicate]为什么 * 不被视为 MathSymbol? [复制]
【发布时间】:2016-09-15 16:45:43
【问题描述】:

我正在回答这个question,一个人在帖子中评论说“*”和“-”都不是 MathSymbol。如果你执行这个 c# 都返回 false:

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

根据msdn

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

我这样做snippet 来查看所有的数学符号,我发现星号和减号显然都在那里。

      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?

【问题讨论】:

  • Unicode Math Symbols are listed here。除非明确说明(并非如此),正常的 ASCII 字符 '*' 和 '-`' 不在此范围内。
  • 这对程序员来说只是一个数学符号,而不是对印刷工来说。设置类型的人有非常高的标准:)
  • 因此,各种编程语言用于数学运算符(例如,星号表示乘法)并不重要。在这种情况下,“数学符号”就像你在高中数学作业中找到的那种。
  • * 只是一个替代品,因为数学乘法“×”会与 x 混淆,但我有点惊讶 - 不是数学减号。
  • ‘-’ 是连字符,而不是减号。 ‘-’ \u2212 是减号。

标签: c#


【解决方案1】:

Unicode Math Symbols are listed here.

除非明确说明(不是),普通 ASCII 字符“*”、“-”和“/”不在此范围内,即使它们通常在文本/编程语言中用于表示数学运算。

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

【讨论】:

    【解决方案2】:

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

    Unicode 数学符号类似于 ×&amp;#215; 作为十进制转义)

    【讨论】:

      【解决方案3】:

      * 的主要用途是用作标点符号(asterisk),- 用作破折号或连字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-07
        • 1970-01-01
        • 2011-08-13
        • 2014-03-26
        • 2011-08-13
        • 2021-03-19
        相关资源
        最近更新 更多