拆分字符串,将ToList <int>()转换为一行</int>

时间:2009-05-26 17:00:16

标签: c# list split

我有一个带数字的字符串

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

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

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

如何将字符串数组转换为整数列表? 这样我就可以将string[]转换为IEnumerable

10 个答案:

答案 0 :(得分:399)

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

答案 1 :(得分:28)

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

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

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

答案 2 :(得分:17)

Joze的方式还需要LINQ,ToList()位于System.Linq命名空间。

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

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

答案 3 :(得分:7)

也可以使用int数组来指定赋值。

像这样

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

答案 4 :(得分:3)

在Unity3d上,int.Parse效果不佳。所以我喜欢吼叫。

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

希望Unity3d用户能够获得此帮助。

答案 5 :(得分:3)

您也可以使用此扩展方法

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

答案 6 :(得分:2)

最好使用int.TryParse来避免出现异常;

var numbers = sNumbers
            .Split(',')
            .Where(x => int.TryParse(x, out _))
            .Select(int.Parse)
            .ToList();

答案 7 :(得分:1)

我的问题很相似,但有时候字符串包含字母(有时是空的)会带来不便。

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(); 
}

答案 8 :(得分:1)

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

  • 将委托(s) => { return Convert.ToInt32(s); }替换为 相应的方法组Convert.ToInt32
  • 将冗余构造函数调用:new Converter<string, int>(Convert.ToInt32)替换为:Convert.ToInt32

结果将是:

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

答案 9 :(得分:-2)

您可以使用:

document.getElementById("myDIV").addEventListener("wheel", foo);
function foo() {
    console.log("Wheel scrolled")
}