读取表格分隔的数据并在文本框中显示(C#,Visual Studio)
Read tabular separated data and show in text boxes (C#, Visual Studio)
我正在为我们的无人机开发调试程序。它在表格分隔的文本文件 (.txt) 中记录航班信息数据(如黑框),为了便于阅读,我不希望其中的一些数据显示在程序中。
这就是我希望程序运行的方式:
- 用户通过按钮打开 txt 文件
- 用户可以通过拖动轨迹条浏览飞行日志行
- 当用户滚动日志行时,文本框会更新来自相关飞行传感器的数据。
日志文件记录 175 个不同 sensors/values。前175组文字是标题,从头开始,有175条数据,再遇到同类数据。
例子:如果我想看avx Throttle,标题"avx Throttle"是第18集。 175 套之后我得到第一个 throttle-value,175 套之后我得到下一个值等等。
我的问题:
我如何确保我的文本框只获取正确的数据?
- 在文本框中写入值之前,我可以将其设置为 "count" Tab 的数量吗?
- 将文本文件转换为更 database-friendly 的文件类型(如 .CSV、.XLSX 或其他类型)会更好吗?
- 如果是,我能否让文本框从 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 并制作虚拟表来操作你的数据。
我正在为我们的无人机开发调试程序。它在表格分隔的文本文件 (.txt) 中记录航班信息数据(如黑框),为了便于阅读,我不希望其中的一些数据显示在程序中。
这就是我希望程序运行的方式:
- 用户通过按钮打开 txt 文件
- 用户可以通过拖动轨迹条浏览飞行日志行
- 当用户滚动日志行时,文本框会更新来自相关飞行传感器的数据。
日志文件记录 175 个不同 sensors/values。前175组文字是标题,从头开始,有175条数据,再遇到同类数据。
例子:如果我想看avx Throttle,标题"avx Throttle"是第18集。 175 套之后我得到第一个 throttle-value,175 套之后我得到下一个值等等。
我的问题: 我如何确保我的文本框只获取正确的数据?
- 在文本框中写入值之前,我可以将其设置为 "count" Tab 的数量吗?
- 将文本文件转换为更 database-friendly 的文件类型(如 .CSV、.XLSX 或其他类型)会更好吗?
- 如果是,我能否让文本框从 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 并制作虚拟表来操作你的数据。