2016-08-01 45 views
-1

ich ein ernstes Problem mit C# haben, ist dies mein Code:C# Eingabezeichenfolge hatte kein richtiges Format. 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); 

Und ich erhalten diese Fehlermeldung:

[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) 
.... 

Wie Sie auf Log-Nachricht sehen können, Strings korrekt sind und sie haben keine Räume.

Ich überprüfte meine /HKEY_CURRENT_USER/Control Panel/International/sPositiveSign und es ist leer.

Was muss ich tun, um dieses Problem zu lösen?

+3

"Strings sind richtig" => wahrscheinlich nicht, wie int.Parse ausfällt. Fügen Sie einen Debugger hinzu, um den Wert _actual_ string zu sehen. – ken2k

+0

Sie können auf "[Gicminos 2016-08-01 11:52:56] SUCCESS: 4" den String-Wert "4" sehen. Ich bin mir sicher. – Gicminos

+4

Ich sah diese Zeile, aber es bedeutet nicht, dass der Wert tatsächlich "4" ist. Was passiert, wenn nach der "4" ein nicht darstellbarer Char vorhanden ist? Keine schwarze Magie hier, kein Bug im Framework, int.Parse ("4") funktioniert. – ken2k

Antwort

1

Ich nehme an, Sie haben versteckte Zeichen dort. Sie können alle Zeichen entfernen, die nicht Ziffern sind:

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

Dies wird für Dich im Fall fehlschlagen, dass Sie eine Fraktionsnummer haben - aber in jedem Fall, dass Sie es analysieren, int.

auch - versuchen und verwenden TryParse statt nur Parse - sicherer Weg