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

C#开发拖拽式Txt工具:删除指定关键词行并覆盖原文件

解决拖拽TXT文件删除指定行并覆盖原文件的问题

嘿Danny,作为编程新手能坚持尝试一周已经超棒了!我先帮你梳理下之前两次尝试里的问题,再给你一个能直接用的解决方案:

你之前代码的问题

  • 第一次尝试:用File.ReadAllText("*.txt")是错误用法,没法直接读取所有txt文件;而且你最后还是生成了带_unwrapped的新文件,没有实现覆盖原文件的需求。
  • 第二次尝试:硬编码了固定文件路径,没法处理拖拽过来的任意文件;另外你只是把行里的"CM"替换为空,而不是直接删除包含关键词的整行,同样生成了新文件,不符合要求。

正确的实现思路

  1. 接收拖拽过来的文件路径(通过args数组,每个元素对应一个拖拽的文件路径)
  2. 对每个文件,读取所有文本行
  3. 过滤掉包含"CM"或"Filling"的行(可根据需求调整大小写敏感性)
  4. 将过滤后的行写回原文件,直接覆盖

完整代码

using System;
using System.IO;

namespace TxtLineCleaner
{
    class Program
    {
        static void Main(string[] args)
        {
            // 没有拖拽文件时,提示后退出
            if (args.Length == 0)
            {
                Console.WriteLine("请将TXT文件拖拽到本程序上!");
                Console.ReadKey();
                return;
            }

            // 遍历所有拖拽进来的文件
            foreach (string filePath in args)
            {
                // 只处理TXT格式的文件
                if (Path.GetExtension(filePath).Equals(".txt", StringComparison.OrdinalIgnoreCase))
                {
                    try
                    {
                        // 读取文件所有行(默认使用系统编码,如需指定编码可加参数,比如Encoding.UTF8)
                        string[] allLines = File.ReadAllLines(filePath);

                        // 过滤掉包含"CM"或"Filling"的行
                        // 要忽略大小写的话,改成:!line.IndexOf("CM", StringComparison.OrdinalIgnoreCase) >=0 && !line.IndexOf("Filling", StringComparison.OrdinalIgnoreCase) >=0
                        var filteredLines = Array.FindAll(allLines, line => 
                            !line.Contains("CM") && !line.Contains("Filling"));

                        // 将过滤后的内容写回原文件,直接覆盖
                        File.WriteAllLines(filePath, filteredLines);

                        Console.WriteLine($"处理完成:{filePath}");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"处理文件失败 {filePath}:{ex.Message}");
                    }
                }
                else
                {
                    Console.WriteLine($"跳过非TXT文件:{filePath}");
                }
            }

            Console.WriteLine("所有文件处理完毕,按任意键退出...");
            Console.ReadKey();
        }
    }
}

注意事项

  • 备份测试:正式使用前一定要先备份你的TXT文件!因为代码会直接覆盖原文件,避免数据丢失。
  • 大小写调整:当前代码是区分大小写的,如果需要忽略大小写(比如匹配"cm"、"Cm"也删除行),可以按照代码注释里的提示修改过滤条件。
  • 编码适配:如果你的TXT文件是特殊编码(比如GB2312),可以在File.ReadAllLines和File.WriteAllLines中添加编码参数,例如File.ReadAllLines(filePath, Encoding.GetEncoding("GB2312"))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:43:57