2016-08-01 240 views
-1

我有一個C#一個嚴重的問題,這是我的代碼:c#輸入字符串格式不正確。 int.Parse

string priceLowstring = Inventory.exportPrice(price.lowest_price); 
string pricestring = Inventory.exportPrice(price.median_price); 

Log.Success(priceLowstring); 
Log.Success(pricestring); 

int priceavg = int.Parse(pricestring); 
int priceLow = int.Parse(priceLowstring); 

而且我收到此錯誤:

[Gicminos 2016-08-01 11:52:56] SUCCESS: 4 
[Gicminos 2016-08-01 11:52:56] SUCCESS: 2 
[Gicminos 2016-08-01 11:52:56] ERROR: Unhandled exception occurred in bot: System.FormatException: Input string was not in a correct format. 
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) 
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) 
.... 

正如你可以登錄的消息看,字符串是正確的,他們沒有任何空間..

我檢查了我的/HKEY_CURRENT_USER/Control Panel/International/sPositiveSign,它是空白的。

我需要做什麼來解決這個問題?

+3

「字符串是正確的」=>可能並非如int.Parse失敗。附加一個調試器來查看_actual_字符串值。 – ken2k

+0

你可以在「[Gicminos 2016-08-01 11:52:56] SUCCESS:4」看到字符串值是「4」。我很確定。 – Gicminos

+4

我看到了那一行,但並不意味着這個值實際上是「4」。如果在「4」之後有一個不可顯示的字符怎麼辦?這裏沒有黑魔法,框架中沒有錯誤,int.Parse(「4」)起作用。 – ken2k

回答

1

我假設你在那裏有隱藏的角色。您可以刪除不是數字的所有字符:

pricestring = new string(pricestring.Where(c => char.IsDigit(c)).ToArray()); 

這將是你有一小部分數量的情況下失敗,你 - 但在任何情況下,你要分析它爲int。

此外 - 嘗試使用TryParse,而不是僅僅Parse - 更安全的方式