我正在尝试读取一个文本文件,其中包含以逗号分隔的数字。当我阅读时使用File.Readline()我把它拿到string[]。我需要将其转换为 int 数组,但它给出了错误。
File.Readline()
string[]
文本文件的内容:
146429,143689,144380,141523,139572,136930,133714,130011,125843,121110,115974,110363,104367,97909,91245,84218,77008,69626, 62058,54445,46942,39436,32146,24932,18359, 12601,9039,9776,13638,18314,23221,27728,32142,35941,39577,42657,45692,48180
我的代码:
while ((line = sr.ReadLine()) != null) { string[] values = line.Split(new string[] { " , " }, StringSplitOptions.None); for (int i = 0; i < values.Length; i++) { // Console.WriteLine(values[i]); valArr[LineCount][i] = Convert.ToInt64(values[i]); // error } LineCount++; }
我想这就是你所追求的:
static void Main(string[] args) { var sr = new StreamReader(@"d:\test.txt"); long[] data = ExtractData(sr).ToArray(); } private static IEnumerable<long> ExtractData(StreamReader sr) { string line; while ((line = sr.ReadLine()) != null) { var items = line.Split(','); foreach (var item in items) { yield return Convert.ToInt64(item); } } }
我的测试文件 (d:\test.txt) 包含:
1,2,3,4,5 1,2,3,4
我得到的数组包含:
1,2,3,4,5,1,2,3,4
正如 Monroe 指出的那样,我错过了您想要一个数组的事实。这是另一个提供这种锯齿状数组的版本。但仍保持产量;)
static void Main(string[] args) { var sr = new StreamReader(@"d:\test.txt"); var data = ExtractData(sr).ToArray(); } private static IEnumerable<long[]> ExtractData(StreamReader sr) { string line; while ((line = sr.ReadLine()) != null) { yield return line.Split(',').Select(i => Convert.ToInt64(i)).ToArray(); } }