通过c#从文本文件中读取列

use*_*332 0 c# arrays text-files

我有这个文本文件

688.63        C         1          C        0          0         0
698.70        C         1          C        0          0         0
708.89        C         1          C        0          0         0
716.78        C         1          C        0          0         0
718.97        C         1          C        0          0         0
728.27        C         1          C        0          0         0
728.89        C         1          C        0          0         0
738.82        C         1          C        0          0         0
759.00        C         1          C        0          0         0
Run Code Online (Sandbox Code Playgroud)

问题是如何读取这个数组中的每一列?如果我想访问列的特定值呢?就像第一列的第二个值。

Son*_*nül 6

您可以使用File.ReadAllLines方法。

打开一个文本文件,读取文件的所有行,然后关闭文件。

来自 MSDN 的示例;

string path = @"c:\temp\MyTest.txt";
string[] lines = File.ReadAllLines(path);
Run Code Online (Sandbox Code Playgroud)

这将创建一个数组,逐行保留为字符串。

如果我想访问列的特定值呢?像第一列的值 2

如果所有值之间的空格相同,则可以使用String.Split类似的方法;

string s = "688.63        C         1          C        0          0         0";
var array = s.Split(new string[]{"        "}, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine(array[1]); // Prints "C"
Run Code Online (Sandbox Code Playgroud)

这里一个demonstration.

在您的情况下,您可以使用;

var array = lines[1].Split(new string[]{"        "}, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine(array[0]); // Prints "698.70"
Run Code Online (Sandbox Code Playgroud)

line[1]让你在你的文本的第二行,并array[0]让你得到这一行的第一个值,即698.70.

我希望它像这样打印 688.63 698.70 708.89 第一列的所有值不仅显示第一个值。

你可以使用foreach喜欢;

string[] lines = File.ReadAllLines(path);
foreach(var line in lines)
{
  var firstValue = line.Split(new string[]{"        "}, StringSplitOptions.RemoveEmptyEntries)[0];
  Console.WriteLine(firstValue);
}
Run Code Online (Sandbox Code Playgroud)