如果我有例如以下字符串:肖夫分隔字符串到列表<int>
「123; 3344; 4334; 12」
和我在一個通用的List<int>
希望這些數字,我想我在這裏不知道一個好的方法,除了分割循環並進行轉換,然後通過每次迭代添加到List<int>
。有沒有人有其他方式去解決這個問題?
已更新。這是我想出來的。我想以舊式的方式來做到這一點,而不是LINQ,因爲我試圖通過字符串,數組,列表以及操作和轉換來獲得更好的效果。
public List<int> StringToList(string stringToSplit, char splitDelimiter)
{
List<int> list = new List<int>();
if (string.IsNullOrEmpty(stringToSplit))
return list;
string[] values = stringToSplit.Split(splitDelimiter);
if (values.Length <= 1)
return list;
foreach (string s in values)
{
int i;
if (Int32.TryParse(s, out i))
list.Add(i);
}
return list;
}
這是一個新的字符串的工具方法我打算使用每當我需要轉換分隔字符串列表列出
如果事情失敗,所以我返回一個空列表返回給調用者。好壞?這樣做很常見嗎?
是的,有更多的「優雅」的方式來做到這一點與LINQ,但我想手動做...舊的方式現在只是爲了我自己的理解。
而且,讓我困擾這一點:
list.AddRange(str.Split(';').Select(Int32.Parse));
的是,我不知道:
- 如何在推的TryParse而是存在。
- 如果
str.Split(';').Select(Int32.Parse)
只是由於某種原因失敗了......那麼這個AddRange所在的方法將會炸燬,除非我在這整個事情上添加一個try/catch,否則我會搞砸妥善處理。
使用的TryParse這裏是一個嚴重的錯誤:http://en.wikipedia.org/wiki/GIGO – 2010-06-29 05:09:12