Nếu tôi có ví dụ chuỗi sau:Xô một chuỗi phân định vào một danh sách <int>
"123; 3344; 4334; 12"
và tôi muốn những con số này trong một generic List<int>
, tôi đoán tôi không biết một cách tốt ở đây ngoài việc chia nhỏ vòng lặp và thực hiện chuyển đổi rồi thêm vào một số List<int>
thông qua mỗi lần lặp. Có ai có cách khác để đi về điều này?
Đã cập nhật. Đây là những gì tôi nghĩ ra. Tôi muốn làm điều này theo cách thời trang cũ, không phải với LINQ bởi vì tôi đang cố gắng để có được tốt hơn với chỉ chuỗi, mảng, danh sách và thao tác và chuyển đổi nói chung.
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;
}
Đây là một phương pháp chuỗi tiện ích mới, tôi có kế hoạch về việc sử dụng bất cứ khi nào tôi cần phải chuyển đổi một danh sách chuỗi phân vào danh sách
Vì vậy, tôi trả lại một danh sách trống lại cho người gọi nếu có điều gì thất bại. Tốt xấu? là nó khá phổ biến để làm điều này?
Có, có nhiều cách "thanh lịch" hơn để làm điều này với LINQ nhưng tôi muốn làm điều đó theo cách thủ công .. cách cũ cho bây giờ chỉ vì sự hiểu biết của riêng tôi.
Ngoài ra, những gì tôi làm phiền về điều này:
list.AddRange(str.Split(';').Select(Int32.Parse));
là tôi không có ý tưởng:
- Làm thế nào để xô trong một TryParse có để thay thế.
- Điều gì xảy ra nếu
str.Split(';').Select(Int32.Parse)
không thành công vì lý do gì ... thì phương pháp mà AddRange này đang ở sẽ nổ tung và trừ khi tôi thêm thử/nắm bắt toàn bộ vấn đề này xử lý nó đúng cách.
Sử dụng TryParse đây là một sai lầm nghiêm trọng: http://en.wikipedia.org/wiki/GIGO –