2013-02-22 44 views
0

我想驗證數字,我只知道小數點分隔符(點或逗號)如何驗證基於小數點分隔符的小數?

例如:n1 = 12.4和n2 = 1,234.5 - >兩者對'。'都有效。作爲小數點分隔符,並且對於','作爲小數點分隔符都是無效的 。

Eg.2:n1 = 12,4和n2 = 1.234,5 - >兩者對於','作爲小數點分隔符都是有效的,並且對於'。'都是無效的 。作爲小數分隔符。

到目前爲止我試過了什麼?

CultureInfo cultureInfo = CultureInfo.InvariantCulture.Clone() as CultureInfo; 
cultureInfo.NumberFormat.NumberDecimalSeparator = myDecimalSeparator; 

並使用

decimal.Parse(stringValue, cultureInfo); 
  1. 爲Eg1 + '' =>都有效OK
  2. 例一+ ''=>都拋出異常OK
  3. 爲Eg2 + ''=> N1拋出異常OK,N2拋出異常錯誤的
  4. 爲Eg2 + '' => n1是124錯誤,n2引發異常確定

你推薦我做什麼?

+0

此鏈接可能會有所幫助:http://stackoverflow.com/questions/1559185/formatting-numbers-as-strings-with-commas-in-place-of-decimals – rsbarro 2013-02-22 15:20:33

回答

0

可以使用decimal.TryParse而嘗試捕捉異常

2

你可以嘗試設置組分隔符,以及 - 這意味着,如果你知道小數點分隔符是一個逗號設置組分隔一個時期:

CultureInfo cultureInfo = CultureInfo.InvariantCulture.Clone() as CultureInfo; 
cultureInfo.NumberFormat.NumberDecimalSeparator = myDecimalSeparator; 
cultureInfo.NumberFormat.NumberGroupSeparator = myGroupSeparator; 
0

嘗試使用

decimal.Parse(stringValue, cultureInfo.NumberFormat); 

使用只有文化是不夠的。 看看MSDN

+0

文化應該也是如此 - 它會通過NumberFormat通過。請參閱[本示例](http://msdn.microsoft.com/en-us/library/ew0seb73.aspx) – 2013-02-22 15:23:43

0

我想你的正常文化是使用','作爲組分隔符和'。'作爲小數分隔符。因此,通過從不變文化中創建新文化,然後將小數點分隔符設置爲'。'。就像無所事事。 另一方面,新創建的文化仍然使用','作爲組分隔符,因此通過將小數點分隔符設置爲','告訴'''既是組分隔符又是小數點分隔符。 這就是爲什麼它可以正常測試1和2,並且在其他測試中失敗。