【问题标题】:Convert string of numbers separated by commas into a List<int>? [duplicate]将逗号分隔的数字字符串转换为 List<int>? [复制]
【发布时间】:2012-02-03 16:04:58
【问题描述】:

可能重复:
Split string, convert ToList<int>() in one line
Convert comma separated string of ints to int array

我有一个像这样的字符串: string test = "1,2,3,4";

有没有更简单的方法(在语法上)将其转换为 List&lt;int&gt; 相当于这样的东西:

string[] testsplit  = test.Split(',');
List<int> intTest = new List<int>();
foreach(string s in testsplit)
    intTest.Add(int.Parse(s));

【问题讨论】:

  • 喜欢“拆分”它吗?我已经更新了标签,以便您解决相关问题。
  • 从没见过这么多相同的答案,天哪。

标签: c# string split


【解决方案1】:

你可以把 LINQ 扔给它:

List<int> intTest = test.Split(',').Select(int.Parse).ToList();

它首先拆分字符串,然后解析每个部分(返回一个IEnumerable&lt;int&gt;),最后从整数序列构造一个列表。

【讨论】:

  • +1。我唯一要改变的是使用方法组而不是 lambda。 .Select(int.Parse).ToList()
  • @32bitkid 你会留下显式类型签名吗? :( 无论如何,这将适用于示例,但有一些有趣的边缘情况,如“,”和“,1”,更不用说任何无效的 int。
  • @pst 我会将这些情况视为无效输入。如果你想处理无效的输入,你需要TryParse 并且代码变得更加丑陋。
【解决方案2】:
var result = test.Split(',').Select(x => int.Parse(x));

或者,如果您真的想要List&lt;int&gt;(而不是任何IEnumerable&lt;int&gt;),请附加.ToList()

【讨论】:

    【解决方案3】:

    test.Split(',').Select(x =&gt; int.Parse(x)).ToList()

    【讨论】:

      【解决方案4】:

      Linq 可以让它更干净一点:

      var intTest = test.Split(',').Select(s=>int.Parse(s)).ToList();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-23
        • 2018-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-14
        • 2013-10-20
        • 2012-01-17
        相关资源
        最近更新 更多