2012-11-01 41 views
4

這有點令人困惑,爲什麼這樣呢?VB.net的IsNumeric views作爲數字?

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

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

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

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

似乎很奇怪對我來說,什麼是它這樣做

編輯原因:上月底工程,以及:

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

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

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

回答

7

生活在意大利 - 在意大利語言環境

運行
Console.WriteLine(IsNumeric("$0")) ' False 
Console.WriteLine(IsNumeric("€0")) ' True 
Console.WriteLine(IsNumeric("£0")) ' False 
Console.WriteLine(IsNumeric("£")) ' False 

雖然這會讓你回來總是真的

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 

因此,我們可以得出這樣的結論則IsNumeric(最初在VB6運行時定義)smart足以從分析當前區域貨幣符號,如果他們之前或之後輸入字符串排除。

+0

這聽起來不像一個很好的功能給我。 –

+0

是的,我同意。兼容性我想。 – Steve