在PHP中我可以做這樣的事情:字符串爲int出現FormatException
if (balance == 0 && !neverBought)
收支來自一個API是一個字符串。
在C#中我試圖平衡轉換爲int,如下圖所示:
if (int.Parse(balance) == 0 && !(neverBought))
,但我得到異常詳細信息:System.FormatException:輸入字符串的不正確的格式。
我在做什麼錯?
在PHP中我可以做這樣的事情:字符串爲int出現FormatException
if (balance == 0 && !neverBought)
收支來自一個API是一個字符串。
在C#中我試圖平衡轉換爲int,如下圖所示:
if (int.Parse(balance) == 0 && !(neverBought))
,但我得到異常詳細信息:System.FormatException:輸入字符串的不正確的格式。
我在做什麼錯?
如果你是不知道,如果字符串是有效的使用方法,如TryParse
試圖解析它未拋出異常:
基於評論您還沒有一個整數,你有一個小數值,所以你應該把它解析爲一個。
decimal decimalBalance;
if(decimal .TryParse(balance, out decimalBalance)
&& decimalBalance == 0m && !neverBought)
@Servy建議的方法是絕對正確的。如果你不確定你的輸入,你應該使用TryParse。然而,我懷疑你正在忍受輸入字符串不是數字,因爲來自PHP,你可能會傳入一些值,例如「$ 1,999.99」或類似的'$'或','引起問題。我想你需要一個「RemoveNonNumeric(this string s)」擴展方法。有關正則表達式的基本方法在這裏討論:http://stackoverflow.com/questions/3055742/regex-to-remove-all-non-numeric-or-period –
@Eric你可以簡單地提供一個適當的格式化到第三基於常用格式之一的「TryParse」參數,而不是使用通常比較脆弱且難以確保正確性的正則表達式。 – Servy
謝謝!它解決了:-) – mgiota
Convert.ToInt32()將probaly藏漢幫助,如果你確信平衡不是一個字符串
string a = "3";
int b = 3;
if (Convert.ToInt32(a) == b)
{
//do smth
}
後balance'的'值。 – Mansfield
嘗試[TryToParse](http://msdn.microsoft.com/en-us/library/f02979c7.aspx)方法 –
在PHP中,任何以數字爲前綴的字符串都被視爲一個數字,用於所有實際目的。在C#中,解析僅適用於只包含數字字符的字符串。 – zneak