将逗号分隔的字符串转换为int []的最简单方法是什么?

kse*_*een 33 c# arrays string int

所以我有逗号分隔的字符串1,5,7,所以将这个转换为最简单和原生的方式stringint[]什么?我可以编写自己的分割函数,但是如何以大多数本地方式执行它有一些兴趣.先谢谢你们!

Ben*_*igt 81

string s = "1,5,7";
int[] nums = Array.ConvertAll(s.Split(','), int.Parse);
Run Code Online (Sandbox Code Playgroud)

或者,LINQ-y版本:

int[] nums = s.Split(',').Select(int.Parse).ToArray();
Run Code Online (Sandbox Code Playgroud)

但第一个应该快一点.

  • 哇,你每天都学到新东西...... o_o (6认同)
  • @Yola:因为Array.ConvertAll知道要输出的大小,所以LINQ ToArray()函数必须在不知道计数的情况下收集结果。 (2认同)
  • @stephanmg:100 万个字符应该是大约 2MB 的内存,这完全没有问题。按照当今计算机的标准,您的“非常大”示例实际上并不是那么大。当您接近 10 亿个字符时,“拆分”方法将开始成为问题。(就上下文而言,圣经大约有 300 万个字符,在内存中很容易处理。大英百科全书有 4400 万个字,所以几亿个字符,仍然在内存中处理但开始接近极限。*每本书一个图书馆架*太多了。) (2认同)

MD *_*med 7

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]);
Run Code Online (Sandbox Code Playgroud)


Bri*_*ham 6

干得好。

string numbers = "1,5,7";
List<int> numlist = new List<int>();

foreach (string number in numbers.Split(','))
    numlist.Add(Int32.Parse(number));
Run Code Online (Sandbox Code Playgroud)