VB.net的IsNumeric视图£为数字?

Lev*_*i H 4 vb.net

这有点令人困惑,为什么会这样?

Console.WriteLine(IsNumeric("$0")) - False

Console.WriteLine(IsNumeric("€0")) - False

Console.WriteLine(IsNumeric("£0")) - True

Console.WriteLine(IsNumeric("£")) - False
Run Code Online (Sandbox Code Playgroud)

对我来说似乎很奇怪,它是什么原因造成的

编辑:也在最后工作:

Console.WriteLine(IsNumeric("300£")) - True

Console.WriteLine(IsNumeric("300£0")) - False

Console.WriteLine(IsNumeric("£300£")) - False
Run Code Online (Sandbox Code Playgroud)

Ste*_*eve 7

住在意大利 - 在意大利语中运行

Console.WriteLine(IsNumeric("$0")) ' False
Console.WriteLine(IsNumeric("€0")) ' True
Console.WriteLine(IsNumeric("£0")) ' False
Console.WriteLine(IsNumeric("£"))  ' False
Run Code Online (Sandbox Code Playgroud)

虽然这会让你永远回归真实

using System.Globalization;

Console.WriteLine(MyIsNumeric("$0", NumberStyles.AllowCurrencySymbol, "en-US"))
Console.WriteLine(MyIsNumeric("€0", NumberStyles.AllowCurrencySymbol, "it-IT")) 
Console.WriteLine(MyIsNumeric("£0", NumberStyles.AllowCurrencySymbol, "en-GB")) 


Public Function MyIsNumeric(ByVal val as String, ByVal NumberStyle as NumberStyles, cName as String) as Boolean
    Dim result as Double
    return Double.TryParse(val,NumberStyle, new CultureInfo(cName), result)
 End Function
Run Code Online (Sandbox Code Playgroud)

因此,我们可以得出结论,IsNumeric(最初在VB6运行时中定义)smart足以在解析当前区域设置货币符号时排除它们在输入字符串之前或之后.