我有一个有数字的字符串
string sNumbers = "1,2,3,4,5";
我可以拆分它,然后将其转换为List<int>
sNumbers.Split( new[] { ',' } ).ToList<int>();
如何将字符串数组转换为整数列表? 这样我就可以将string[]转换为IEnumerable
我有一个有数字的字符串
string sNumbers = "1,2,3,4,5";
我可以拆分它,然后将其转换为List<int>
sNumbers.Split( new[] { ',' } ).ToList<int>();
如何将字符串数组转换为整数列表? 这样我就可以将string[]转换为IEnumerable
当前回答
var numbers = sNumbers?.Split(',')?.Select(Int32.Parse)?.ToList();
最新版本的c# (v6+)允许您使用空条件操作符进行空检查
其他回答
最好使用int。TryParse避免异常;
var numbers = sNumbers
.Split(',')
.Where(x => int.TryParse(x, out _))
.Select(int.Parse)
.ToList();
你也可以使用这个扩展方法
public static List<int> SplitToIntList(this string list, char separator = ',')
{
return list.Split(separator).Select(Int32.Parse).ToList();
}
用法:
var numberListString = "1, 2, 3, 4";
List<int> numberList = numberListString.SplitToIntList(',');
var numbers = sNumbers?.Split(',')?.Select(Int32.Parse)?.ToList();
最新版本的c# (v6+)允许您使用空条件操作符进行空检查
当我们有泛型时,为什么只使用int型呢? 那么像这样的扩展方法呢:
public static List<T> Split<T>(this string @this, char separator, out bool AllConverted)
{
List<T> returnVals = new List<T>();
AllConverted = true;
var itens = @this.Split(separator);
foreach (var item in itens)
{
try
{
returnVals.Add((T)Convert.ChangeType(item, typeof(T)));
}
catch { AllConverted = false; }
}
return returnVals;
}
然后
string testString = "1, 2, 3, XP, *, 6";
List<int> splited = testString.Split<int>(',', out _);
你可以用这个:
List<Int32> sNumberslst = sNumbers.Split(',').ConvertIntoIntList();