You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#文本文件数据解析及Tuple存储坐标重复问题求助

问题解决:解析文本时坐标重复的问题

问题根源

你的代码中positions是在循环外部声明的集合,每次循环都会往里面追加当前行的坐标,但你始终取positions[0]和positions[1]——也就是第一行的坐标值,导致所有条目都重复第一行的坐标。

解决方法

不需要依赖全局的positions集合,直接在循环内解析当前行的坐标为局部变量即可,更简洁且避免错误:

foreach(var line in File.ReadLines(file))
{
     var values = line.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries); // 处理多空格情况
     int x = int.Parse(values[0]);
     int y = int.Parse(values[1]);
     var category = values[3];
     var certainty = double.Parse(values[4]);
     results.Add(new(x, y, category, certainty));
}

可选方案(如果一定要用集合存储当前行坐标)

如果坚持要用类似positions的集合,需要每次循环重新初始化集合,只存储当前行的两个坐标:

foreach(var line in File.ReadLines(file))
{
     var values = line.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries);
     var positions = new List<int>(); // 每次循环新建集合,只存当前行坐标
     for (var i = 0; i < 2; i++)
     {
           positions.Add(int.Parse(values[i]));
     }
     var category = values[3];
     var certainty = double.Parse(values[4]);
     results.Add(new(positions[0], positions[1], category, certainty));
}

额外提示

用Split(" ")时,如果文本行里有多个连续空格,会生成空字符串元素,建议用Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries)过滤掉空值,避免解析时抛出异常。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:54:11