我正在回答这个question https://stackoverflow.com/questions/39515852/what-exactly-is-classified-as-a-symbol-in-c/39515957#39515957一个人在帖子中评论说“*”和“-”都不是 MathSymbol。如果执行此 c# 均返回 false:
char.IsSymbol('*'); //false
char.IsSymbol('-'); //false
根据msdn https://msdn.microsoft.com/en-us/library/00k2wda1(v=vs.110).aspx :
有效符号是以下类别的成员
UnicodeCategory:MathSymbol、CurrencySymbol、ModifierSymbol 和
其他符号。 Unicode 标准中的符号是松散定义的集合
包含以下内容的字符:
我做了这个snippet https://dotnetfiddle.net/3ivTUx查看所有数学符号,我发现星号和减号显然都在那里。
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);
我想知道背后是否有原因,为什么这两个符号不被视为数学符号?
此处列出了 Unicode 数学符号 http://www.fileformat.info/info/unicode/category/Sm/list.htm.
除非明确说明(事实并非如此),否则普通 ASCII 字符“*”、“-”和“/”不在此范围内,即使它们通常在文本/编程语言中用于表示数学运算。
与包含在“符号、数学”类别中的“+”字符不同,这些其他字符具有更多的重载用法/名称(例如星号、破折号连字符、斜线),这使得它们作为广义数学的包含变得可疑:Unicode 字符属于一个single类别。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)