【问题标题】:What's the most simple way to convert comma separated string to int[]? [duplicate]将逗号分隔的字符串转换为 int [] 的最简单方法是什么? [复制]
【发布时间】:2011-09-28 12:30:44
【问题描述】:

所以我有像1,5,7 这样的逗号分隔字符串,那么将这个string 转换为int[] 的最简单和原生的方法是什么?我可以编写自己的 split 函数,但有一些兴趣如何以最原生的方式进行。 提前谢谢各位!

【问题讨论】:

    标签: c# arrays string int


    【解决方案1】:
    string s = "1,5,7";
    int[] nums = Array.ConvertAll(s.Split(','), int.Parse);
    

    或者,LINQ-y 版本:

    int[] nums = s.Split(',').Select(int.Parse).ToArray();
    

    但第一个应该快一点。

    【讨论】:

    • 哇,你每天都能学到新东西……o_o
    • 为什么第一个更快?
    • @Yola:因为Array.ConvertAll 知道输出的大小——LINQ ToArray() 函数必须在事先不知道计数的情况下收集结果。
    • 这对于非常大的字符串也会很快吗?假设有 1,000,000 个字符的字符串?
    • @stephanmg:100 万个字符应该是大约 2MB 的内存,这完全没有问题。按照当今计算机的标准,您的“非常大”示例实际上并没有那么大。当您接近十亿个字符时,Split 方法将开始成为问题。 (就上下文而言,圣经大约有 300 万个字符,很容易在内存中处理。大英百科全书有 4400 万个单词,所以有几亿个字符,仍然在内存中处理,但开始接近极限。每个一个图书馆书架上的书会太多。)
    【解决方案2】:
    string numbers = "1,5,7";
    string[] pieces = numbers.Split(new string[] { "," },
                                      StringSplitOptions.None);
    
    int[] array2 = new int[pieces.length];
    
    for(int i=0; i<pieces.length; i++)
        array2[i] = Convert.ToInt32(pieces[i]);
    

    【讨论】:

    • 为什么是新的字符串[] { "," }? numbers.Split(",") 应该够了吧?
    【解决方案3】:

    给你。

    string numbers = "1,5,7";
    List<int> numlist = new List<int>();
    
    foreach (string number in numbers.Split(','))
        numlist.Add(Int32.Parse(number));
    

    【讨论】:

    • Gooooddd jooobbb!!!!
    猜你喜欢
    • 2013-10-23
    • 2012-02-03
    • 2018-08-16
    • 2011-01-03
    • 2015-07-13
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多