2016-02-24 88 views
0

我一直無法找到解決此問題的方法,如果有人能看到它,我們將非常感激。我有個字符串數組。通常,字符串數組將包含多個字符串ID(例如「1」,「2」,「3」),但有時它將包含單個空字符串(即具有值「」)的字符串。 (這是不可改變的,因爲它是系統設計中不可或缺的部分。)如何獲得字符串數組中「」的值作爲「0」?

字符串ID然後轉換爲整數,並存儲在列表中,但如果字符串Id是「」,則轉換不會工作,因爲你不能將空字符串轉換爲整數,因爲它沒有數字等值。

我想用Replace方法替換空字符串「0」,然後將其轉換爲0,但替換方法不會取代「」的實例,因爲我基本上說,替換實例沒有什麼,這是沒有道理的。

foreach (string stringId in stringArray) 
{ 
    intList.Add(Convert.ToInt32(stringId.Replace("", "0"))); 
} 

所以我的問題是,我怎麼能「在一個字符串數組,要麼被視爲或轉換爲」獲得「一個實例0」?

回答

2

使用你有上面的技術,你只需要包含一個條件檢查:

foreach (string stringId in stringArray) 
{ 
    intList.Add(Convert.ToInt32((stringId == "" ? "0" : stringId))); 
} 

您也可以使用ConvertAll單個線的應用:

intList = Array.ConvertAll(stringArray, s => (s == "" ? 0 : int.Parse(s))).ToList(); 
0

打破它成多條語句:

foreach (string stringId in stringArray) 
{ 
    if (!string.IsNullOrWhiteSpace(stringId)) { 
     intList.Add(Convert.ToInt32(stringId)); 
    } 
    else { 
     intList.Add(0); 
    } 
} 

或使用int.TryParse

foreach (string stringId in stringArray) 
{ 
    int id; 
    int.TryParse(stringId, out id); 
    intList.Add(id); 
} 
0

你可以使用LINQ:

intList = stringArray.Select(str => String.IsNullOrEmpty(str) ? 0 : Int32.Parse(str)) 
         .ToList(); 

Array.ConvertAll具有相同的委託:

intList = Array.ConvertAll(stringArray, str => String.IsNullOrEmpty(str) ? 0 : Int32.Parse(str)) 
       .ToList(); 
相關問題