首页 > 其他分享 >.NET 批量替换关键字

.NET 批量替换关键字

时间:2023-01-30 15:36:20浏览次数:43  
标签:files arr string 批量 filePath lines fileName 关键字 NET

最近nfx462的项目升级.NET6需要批量替换Ilogger为Ilogger<类名>
vs自带的搜索替换其正则表达式好像只能匹配一行,直接扫描文件替换吧

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
string path = "";
var files = Directory.GetFiles(path, "*.cs", SearchOption.AllDirectories).ToList();
files = files.Where(x =>
{
    string[] arr = x.Split('\\');
    var fileName = arr[^1];
    return fileName.Count(c => c == '.') == 1 && !fileName.StartsWith('I');
}).ToList();

foreach (string filePath in files)
{
    string[] arr = filePath.Split('\\');
    var fileName = arr[^1].Substring(0, arr[^1].Length - 3);
    bool hasChange = false;
    if (File.Exists(filePath))
    {
        string[] lines = System.IO.File.ReadAllLines(filePath);
        for (int i = 0; i < lines.Length; i++)
        {
            if (lines[i].Contains("ILogger"))
            {
                hasChange = true;
                lines[i] = lines[i].Replace("ILogger", $"ILogger<{fileName}>");
            }
        }
        if (hasChange)
        {
            File.WriteAllLines(filePath, lines);
        }
    }
}
Console.ReadKey();

 



标签:files,arr,string,批量,filePath,lines,fileName,关键字,NET
From: https://www.cnblogs.com/nene22----/p/17076073.html

相关文章

  • .NET7后端框架:读取配置文件
    前言在项目开发过程中,不可避免的会设置一些全局的可变的参数,如连接字符串、功能开关、Swagger配置、Redis配置等等。.NETCore将这些配置参数统一放在appsettings.json......
  • How to join testnet
    HowtojointestnetThesestepsassumeyouhaveChia installed.Step1.Run chiainitStep2.Ifyoudonotalreadyhavekeysgeneratedthenrun chiakeysg......
  • Theory-guided physics-informed neural networks for boundary layer problems with
    JCP2023  这篇文章聚焦了PINN在处理奇异摄动问题时所面临的困难。(用不同的分支网络去表示内部区域和外部区域中边界层问题的不同阶数的近似)。但本文所提出的方法计算......
  • Dynamics 365 视图界面,通过分隔符实现批量查询数据(已知编号数组,直接复制到视图可以直
    效果:  源码实现:publicclasstest_RetrieveMultiple_pre:IPlugin{publicvoidExecute(IServiceProviderserviceProvider){//上下文......
  • Net6/SuperSocket2.0课程1,一个Telnet示例
    十年河东,十年河西,莫欺少年穷学无止境,精益求精1、新建控制台程序并引入包dotnetaddpackageSuperSocket.Server 2、书写代码usingSystem;usingSystem.Text;......
  • Quartz.Net 官方教程(Listener 和 JobStore)
    Listener调度任务的监听,当前版本支持添加调度,触发器和任务的监听,其中触发器和任务的监听支持通过监听名称进行添加(Add*ListenerMatcher方法)监听不能对外抛出异常,需要内部......
  • Python自动批量修改文件名称的方法
      本文介绍基于Python语言,按照一定命名规则批量修改多个文件的文件名的方法。  已知现有一个文件夹,其中包括班级所有同学上交的作业文件,每人一份;所有作业文件命名格式......
  • 通过 explain 关键字对sql进行优化
    在select语句之前增加explain关键字,MySQL会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果from中包含子查询,仍会执行该子查询,将结果放......
  • Kubernetes:开源 K8s 管理工具 Rancher 认知
    写在前面博文内容涉及​​Rancher​​的介绍,集群内安装查看​​Rancher​​的基本功能理解不足小伙伴帮忙指正我所渴求的,無非是將心中脫穎語出的本性付諸生活,為何竟如......
  • Asp.Net7 与 Vue3 组成的 BFF模式
    大家好,我是没有好工作的后端开发工程师,兼云原生方向的运维,被社会毒打被迫学习前端,写文保平安。介绍BFF模式BackendForFrontend(服务于前端的后端)初看我们会感觉它是M......