2012-03-16 73 views
1

我試圖轉換_string [1]至一倍_string [2] INTC#.NET將字符串轉換爲加倍和int處理空字符串

是動態生成的這個字符串數組。

字符串值可以爲空或1.1或1或.1 我該如何處理這個問題。

我想這樣做。

string locale; 
locale = System.Web.HttpContext.Current.Request.UserLanguages[0]; 
CultureInfo culture; 
culture = new CultureInfo(locale); 
double cValue = Double.Parse(_string[1], culture.NumberFormat) 
int sValue = Int32.Parse(_string[2], culture.NumberFormat) 

這個時候再給我打無效的輸入時出現空字符串或十進制字符串

+0

應該如何將一個空字符串解析爲雙重?!應該給予什麼? – 2012-03-16 21:25:25

+0

爲空或無效輸入分析雙重0.00和INT只是0 – HaBo 2012-03-16 21:26:33

回答

5

對於雙您可以使用三元運算符這樣

double d = Double.TryParse(_string[1], out d) ? Convert.ToDouble(_string[1]) : 0; 

爲了使其安全,你既可以使用一個try-catch或Double.TryParse方法,它是一個更好的選擇。

如果你想顯示這個,你會得到0作爲輸出。你可以把它變成一個0.00用下面的行

string output = (String.Format("{0:0.00}", cValue)); 
+0

這一個更好 – HaBo 2012-03-16 22:15:04

+0

不幸的是,如果輸入不代表有效數字,Convert.ToDouble將拋出異常,而TryParse則不會。 – Phil 2012-03-16 23:01:32

+0

TryParse返回一個布爾值。 – Phil 2012-03-17 08:42:57

0

嘗試......

double cValue = 0.0; 
int sValue = 0; 

if(!String.IsNullOrEmpty(_string[1])) 
{ 
    cValue = Convert.ToDouble(_string[1]); 
} 

if (!String.IsNullOrEmpty(_string[2])) 
{ 
    sValue = Convert.ToInt32(_string[2]); 
} 

http://msdn.microsoft.com/en-us/library/zh1hkw6k.aspx

如果字符串爲空或清空不會嘗試轉換它。它只會是0.0或0.

+0

但我的情況是如果字符串是空的? – HaBo 2012-03-16 21:34:58

+0

但是如果失敗,它會拋出一個異常,你的選擇主要取決於你想如何做錯誤處理。空字符串會拋出異常,將該情況轉換爲0將始終需要額外的檢查。 – MrFox 2012-03-16 21:38:50

+0

不處理空字符串。 – Jonathan 2014-11-18 20:16:56

6

您可以使用double.TryParse。

// There's no need to initialize cValue since it's used as an 
// out parameter by TryParse which guarantees initialization. 
// If TryParse fails the output parameter will be set it to 
// default(T), where T is double in this case, i.e. 0. 

double cValue; 

if(Double.TryParse(line[8], out cValue)) 
{ 
    // success (cValue is now the parsed value) 
} 
else 
{ 
    // failure (cValue is now 0) 
} 

,或者如果你需要指定文化

if(double.TryParse(line[8], NumberStyles.Any, CultureInfo.CurrentCulture, out cValue)) 
{ 
} 

如果你真的想成爲簡潔,那麼你可以簡單地使用:

double cValue; 
Double.TryParse(line[8], out cValue); 

上面多餘的行只是爲示範。

+0

謝謝我選擇這種方式 – HaBo 2012-03-16 21:45:00