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

C#中如何在文件内单独标记单个目标为已完成?

目标标记批量修改问题修复方案

问题背景

开发的目标管理程序支持三种目标类型:Simple goals、eternal goals、checklist goals,目标可存储至文件并随时加载。用户完成目标可获得对应积分,规则如下:

  • Simple goals:标记完成即可
  • eternal goals:无需标记完成
  • checklist goals:完成指定次数后标记完成

当前存在问题:记录事件时,程序会将所有目标批量标记为已完成,实际需求是仅标记用户选中的单个目标。

原代码问题分析

原代码中处理Simple目标时,使用fileContent.Replace("[]","[x]")全局替换文件内所有未完成标识,这会导致所有目标的[]都被改成[x],而非仅修改用户选中的目标行。

修复方案

核心思路是仅修改用户选中目标对应的行,而非全局替换。修改原代码中处理Simple目标的逻辑块:

if (strings[0].Contains("Simple")) 
{
    // 读取存储用户可见目标的文件所有行
    string[] displayLines = File.ReadAllLines(goal._fileName);
    // 定位到用户选中的目标行,替换该行的未完成标识
    displayLines[ansInt - 1] = displayLines[ansInt - 1].Replace("[]", "[x]");
    // 将修改后的所有行写回文件
    File.WriteAllLines(goal._fileName, displayLines);
}

后续扩展建议

  • 针对Checklist goals,需实现类似逻辑:找到目标行更新完成次数,当次数达标后再替换为[x]
  • 添加输入合法性检查,判断用户输入的索引是否在有效范围内,避免索引越界异常
  • 建议合并两个存储文件的结构,将目标类型、名称、状态、积分等数据统一存储,减少文件同步的复杂度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:46:09