拆分string,将ToList <int>()转换为一行

我有一个string,有数字

string sNumbers = "1,2,3,4,5"; 

我可以拆分它然后将其转换为List<int>

 sNumbers.Split( new[] { ',' } ).ToList<int>(); 

我怎样才能将string数组转换为整数列表? 这样我就可以将string[]转换为IEnumerable

 var numbers = sNumbers.Split(',').Select(Int32.Parse).ToList(); 

你也可以这样做,而不需要Linq:

 List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) ); // Uses Linq var numbers = Array.ConvertAll(sNumbers.Split(','), int.Parse).ToList(); 

Joze的方式也需要LINQ, ToList()System.Linq命名空间中。

通过将数组传递给List构造函数,可以将数组转换为不使用Linq的List:

 List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) ); 

在Unity3d上, int.Parse不能正常工作。 所以我使用像波纹pipe。

 List<int> intList = new List<int>( Array.ConvertAll(sNumbers.Split(','), new Converter<string, int>((s)=>{return Convert.ToInt32(s);}) ) ); 

希望对Unity3d用户有所帮助。

也可以使用这个扩展方法

 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(','); 

也可以通过int数组来指定赋值。

喜欢这个

 int[] numbers = sNumbers.Split(',').Select(Int32.Parse).ToArray(); 

我的问题是类似的,但有时不便,string包含字母(有时是空的)。

 string sNumbers = "1,2,hh,3,4,x,5"; 

尝试遵循Pcode Xonos扩展方法:

 public static List<int> SplitToIntList(this string list, char separator = ',') { int result = 0; return (from s in list.Split(',') let isint = int.TryParse(s, out result) let val = result where isint select val).ToList(); } 

您可以使用新的C#6.0语言function:

  • replace委托(s) => { return Convert.ToInt32(s); } (s) => { return Convert.ToInt32(s); }与相应的方法组Convert.ToInt32
  • replace多余的构造函数调用: new Converter<string, int>(Convert.ToInt32) with: Convert.ToInt32

结果将是:

 var intList = new List<int>(Array.ConvertAll(sNumbers.Split(','), Convert.ToInt32)); 

你可以使用这个:

 List<Int32> sNumberslst = sNumbers.Split(',').ConvertIntoIntList();