2013-10-23 85 views
2

在PHP中我可以做這樣的事情:字符串爲int出現FormatException

if (balance == 0 && !neverBought) 

收支來自一個API是一個字符串。

在C#中我試圖平衡轉換爲int,如下圖所示:

if (int.Parse(balance) == 0 && !(neverBought)) 

,但我得到異常詳細信息:System.FormatException:輸入字符串的不正確的格式。

我在做什麼錯?

+1

後balance'的'值。 – Mansfield

+0

嘗試[TryToParse](http://msdn.microsoft.com/en-us/library/f02979c7.aspx)方法 –

+2

在PHP中,任何以數字爲前綴的字符串都被視爲一個數字,用於所有實際目的。在C#中,解析僅適用於只包含數字字符的字符串。 – zneak

回答

7

如果你是不知道,如果字符串是有效的使用方法,如TryParse試圖解析它未拋出異常:

基於評論您還沒有一個整數,你有一個小數值,所以你應該把它解析爲一個。

decimal decimalBalance; 
if(decimal .TryParse(balance, out decimalBalance) 
    && decimalBalance == 0m && !neverBought) 
+0

@Servy建議的方法是絕對正確的。如果你不確定你的輸入,你應該使用TryParse。然而,我懷疑你正在忍受輸入字符串不是數字,因爲來自PHP,你可能會傳入一些值,例如「$ 1,999.99」或類似的'$'或','引起問題。我想你需要一個「RemoveNonNumeric(this string s)」擴展方法。有關正則表達式的基本方法在這裏討論:http://stackoverflow.com/questions/3055742/regex-to-remove-all-non-numeric-or-period –

+0

@Eric你可以簡單地提供一個適當的格式化到第三基於常用格式之一的「TryParse」參數,而不是使用通常比較脆弱且難以確保正確性的正則表達式。 – Servy

+0

謝謝!它解決了:-) – mgiota

-1

Convert.ToInt32()將probaly藏漢幫助,如果你確信平衡不是一個字符串

  string a = "3"; 
      int b = 3; 
      if (Convert.ToInt32(a) == b) 
      { 
       //do smth 
      } 
相關問題