读取表格分隔的数据并在文本框中显示(C#,Visual Studio)

Read tabular separated data and show in text boxes (C#, Visual Studio)

我正在为我们的无人机开发调试程序。它在表格分隔的文本文件 (.txt) 中记录航班信息数据(如黑框),为了便于阅读,我不希望其中的一些数据显示在程序中。

这就是我希望程序运行的方式:

  1. 用户通过按钮打开 txt 文件
  2. 用户可以通过拖动轨迹条浏览飞行日志行
  3. 当用户滚动日志行时,文本框会更新来自相关飞行传感器的数据。

日志文件记录 175 个不同 sensors/values。前175组文字是标题,从头开始,有175条数据,再遇到同类数据。

例子:如果我想看avx Throttle,标题"avx Throttle"是第18集。 175 套之后我得到第一个 throttle-value,175 套之后我得到下一个值等等。

我的问题: 我如何确保我的文本框只获取正确的数据?

  1. 在文本框中写入值之前,我可以将其设置为 "count" Tab 的数量吗?
  2. 将文本文件转换为更 database-friendly 的文件类型(如 .CSV、.XLSX 或其他类型)会更好吗?
  3. 如果是,我能否让文本框从 table 中的特定列中获取值(就像 Excel 中的 S-column(avx Throttle)图片)?我想这会让工作更轻松?

看看我在说什么 -> Image of the program, the raw log file and the log file when opened in Excel

希望您能指导我正确的方向! :)

此致,莫腾。

如果要删除 whitespace/tabs,则需要替换它们或拆分它们。这里有一些摆脱 tabs/white space

的选项
string s = dataText.Replace("\t", ",");

然后你可以使用

拆分它
string[] arrayOfData = s.Split(new char{','};

或者如果它是白色的 space 你可以这样做

string s = dataText.Replace(" ", ",");

然后你可以使用

拆分它
string[] arrayOfData = s.Split(new char{','};

如果您需要遍历值数组,您可以使用 for 循环并基于您需要的列,您可以按照以下方式做一些事情

for(int i=0; i < arrayOfData.Length; i++){
     if(columnYouWant){
       //manipulate data arrayOfData[i]
     }

你也可以做一个 DataTable 并制作虚拟表来操作你的数据。