VB.Net - Char.IsNumber 输入罗马数字

VB.Net - Char.IsNumber input Roman numerals

我刚刚注意到 Char.IsNumber 函数接受罗马数字(除其他外)作为数字。 https://msdn.microsoft.com/en-us/library/y8t708dh%28v=vs.110%29.aspx

但是罗马数字是字符串("III"、"IV")或者字母("V"、"X"),这个方法怎么输入罗马数字return 是吗?

这让我想知道还可以输入哪些我们可能不认为是数字的内容。 我发现的 Char.IsSymbol 方法中的数字符号 (#) returns false

But Roman numerals would be strings ("III", "IV")…

总的来说,您认为罗马数字是 string 而不是 char 是正确的。

然而,对于某些特定的罗马数字——Ⅰ、Ⅱ、Ⅲ、Ⅳ、…、Ⅻ、Ⅼ、Ⅽ、Ⅾ、Ⅿ,以及它们的小写版本——Unicode 有专门的(非代理)代码点。我刚用过!有关详细信息,请参阅以下资源:

请注意,这些数字中的每一个都是单个(非代理项)Unicode 代码点,因此仅适合一个 .NET System.Char

…how can you input Roman numerals into this method for it to return true?

下面是 VB.NET 中的示例:

Dim romanNumeralFour As Char = ChrW(&H2163)      ' or: "Ⅳ"c
Assert.IsTrue(Char.IsNumber(romanNumeralFour))

这里是 C# 版本:

const char romanNumeralFour = '\u2163';         // or: 'Ⅳ'
Assert.IsTrue(char.IsNumber(romanNumeralFour));

喜欢,请注意,如果您使用拉丁字母,这将不起作用,例如M;罗马数字 是一个不同的字符,即使它看起来可能相同(取决于您的显示字体)!

It makes me wonder what else could be entered that we may not consider to be a number.

对于来自这些 Unicode 字符类别的任何字符,该方法应该 return True