【发布时间】:2011-09-28 12:30:44
【问题描述】:
所以我有像1,5,7 这样的逗号分隔字符串,那么将这个string 转换为int[] 的最简单和原生的方法是什么?我可以编写自己的 split 函数,但有一些兴趣如何以最原生的方式进行。
提前谢谢各位!
【问题讨论】:
所以我有像1,5,7 这样的逗号分隔字符串,那么将这个string 转换为int[] 的最简单和原生的方法是什么?我可以编写自己的 split 函数,但有一些兴趣如何以最原生的方式进行。
提前谢谢各位!
【问题讨论】:
string s = "1,5,7";
int[] nums = Array.ConvertAll(s.Split(','), int.Parse);
或者,LINQ-y 版本:
int[] nums = s.Split(',').Select(int.Parse).ToArray();
但第一个应该快一点。
【讨论】:
Array.ConvertAll 知道输出的大小——LINQ ToArray() 函数必须在事先不知道计数的情况下收集结果。
Split 方法将开始成为问题。 (就上下文而言,圣经大约有 300 万个字符,很容易在内存中处理。大英百科全书有 4400 万个单词,所以有几亿个字符,仍然在内存中处理,但开始接近极限。每个一个图书馆书架上的书会太多。)
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]);
【讨论】:
给你。
string numbers = "1,5,7";
List<int> numlist = new List<int>();
foreach (string number in numbers.Split(','))
numlist.Add(Int32.Parse(number));
【讨论】: