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

时间:2015-01-30 11:35:50

标签: vb.net char roman-numerals

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

但罗马数字将是字符串(" III"," IV")或字母(" V"," X"),如何将罗马数字输入此方法以使其返回true?

这让我想知道还有什么可以输入,我们可能不认为是一个数字。 数字符号(#)从我发现的Char.IsSymbol方法返回false,例如。

1 个答案:

答案 0 :(得分:4)

  

但罗马数字将是字符串(“III”,“IV”)......

一般来说,罗马数字往往是string,而不是char,这是正确的。

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

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

  

...如何将罗马数字输入此方法以使其返回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));

Hans Passant commented above一样,请注意,如果您使用拉丁字母,例如M,则无效;罗马数字是一个不同的字符,即使它看起来可能相同(取决于您的显示字体)!

  

这让我想知道还有什么可以输入,我们可能不认为是一个数字。

对于这些Unicode字符类别中的任何字符,该方法应该返回True