C# - 如何分析文本文件(空格分隔的数字)
本文关键字:空格 分隔 数字 文件 文本 | 更新日期: 2023-09-27 17:56:55
给定一个由空格分隔的数据文件,
10 10 10 10 222 331
2 3 3 4 45
4 2 2 4
如何读取此文件并加载到数组中
谢谢
var fileContent = File.ReadAllText(fileName);
var array = fileContent.Split((string[])null, StringSplitOptions.RemoveEmptyEntries);
如果您只有数字并且需要 int 列表作为结果,您可以这样做:
var numbers = array.Select(arg => int.Parse(arg)).ToList();
这取决于您想要的数组类型。如果你想将所有内容展平成一个一维数组,请使用 Alex Aza 的答案,否则,如果你想要一个映射到文本文件中的行和元素的二维数组:
var array = File.ReadAllLines(filename)
.Select(line => line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
.Where(line => !string.IsNullOrWhiteSpace(line)) // Use this to filter blank lines.
.Select(int.Parse) // Assuming you want an int array.
.ToArray();
请注意,没有错误处理,因此如果解析失败,上面的代码将引发异常。
你会
对StreamReader.ReadLine()
和String.Split()
感兴趣
我无法得到Quick Joe Smith的答案,所以我修改了它。我将修改后的代码放入"FileReader"类中的静态方法中:
public static double[][] readWhitespaceDelimitedDoubles(string[] input)
{
double[][] array = input.Where(line => !String.IsNullOrWhiteSpace(line)) // Use this to filter blank lines.
.Select(line => line.Split((string[])null, StringSplitOptions.RemoveEmptyEntries))
.Select(line => line.Select(element => double.Parse(element)))
.Select(line => line.ToArray())
.ToArray();
return array;
}
对于我的应用程序,我正在解析双精度而不是 int。要调用代码,请尝试使用如下所示的内容:
string[] fileContents = System.IO.File.ReadAllLines(openFileDialog1.FileName);
double[][] fileContentsArray = FileReader.readWhitespaceDelimitedDoubles(fileContents);
Console.WriteLine("Number of Rows: {0,3}", fileContentsArray.Length);
Console.WriteLine("Number of Cols: {0,3}", fileContentsArray[0].Length);