2016-08-01 17 views
-1

int.Parse私は、C#ので深刻な問題を抱えている、これは私のコードです:c#入力文字列の形式が正しくありません。

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 - 安全な方法

関連する問題