【发布时间】: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#