荐 批量删除项目代码注释 支持单行// 多行/* 支持前端后端 C# JAVA vue js html
程序员文章站
2022-03-11 16:09:19
先预览一下成果吧~批量删除代码中的注释支持多种文件后缀 (.java、.cs、.aspx、.html、.vue、.js、.css、.wxml、…)支持多种注释类型(//、/**/、、///…)实现原理: 循环项目目录下指定后缀的子文件 .cs .vue .js…一行一行读取内容 检测到指定注释类型 // /* … 就剔除该行代码最后重写入文件附上实现代码(C#控制台):using System;using System.Collections.Generic;using Sy...
先预览一下成果吧~
- 批量删除代码中的注释
- 支持多种文件后缀 (.java、.cs、.aspx、.html、.vue、.js、.css、.wxml、…)
- 支持多种注释类型(//、/**/、///…) < !–xxx–>这样的块注释 暂时没有处理 ,有空再加。
实现原理: 循环项目目录下指定后缀的子文件 .cs .vue .js…
一行一行读取内容 检测到指定注释类型 // /* … 就剔除该行代码
最后重写入文件
附上实现代码(C#控制台):
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DeleteNotes
{
class Program
{
static void Main(string[] args)
{
Delete Delete = new Delete();
Console.WriteLine("----------欢迎使用诗肴小工具----------");
Console.WriteLine("");
Console.WriteLine("-----------请输入文件夹路径-----------");
String Path = Console.ReadLine();
//循环项目文件并删除注释
Delete.DeleteNotes(Path);
Console.WriteLine("");
Console.WriteLine("--------------操作文件结束,结果统计如下:--------------");
Console.WriteLine("");
Console.WriteLine("项目文件数:" + Delete.FileAmount + " ,指定后缀文件:" + Delete.SuccessAmount + " ,操作成功:" + Delete.SuccessAmount + " ,操作失败:" + Delete.FailAmount);
Console.ReadLine();
}
}
/// <summary>
/// 删除类
/// </summary>
public class Delete
{
/// <summary>
/// 指定文件后缀 带点扩展名 ".xxxx" 列表
/// </summary>
List<String> ExtensionList = new List<string>();
/// <summary>
/// 指定注释类型
/// </summary>
List<String> NotesList = new List<string>();
//文件数量
public Int32 FileAmount = 0;
//操作文件数量
public Int32 HasActionFileAmount = 0;
//成功文件数量
public Int32 SuccessAmount = 0;
//失败文件数量
public Int32 FailAmount = 0;
/// <summary>
/// 构造方法
/// </summary>
public Delete()
{
//文件数量
FileAmount = 0;
//操作文件数量
HasActionFileAmount = 0;
//成功文件数量
SuccessAmount = 0;
//失败文件数量
FailAmount = 0;
#region 指定文件后缀
//添加需要删除注释的文件后缀
ExtensionList.Add(".vue");
ExtensionList.Add(".js");
ExtensionList.Add(".css");
ExtensionList.Add(".scss");
ExtensionList.Add(".wxss");
ExtensionList.Add(".wxml");
ExtensionList.Add(".json");
ExtensionList.Add(".cs");
ExtensionList.Add(".xml");
ExtensionList.Add(".html");
ExtensionList.Add(".asax");
ExtensionList.Add(".Master");
ExtensionList.Add(".aspx");
ExtensionList.Add(".java");
#endregion
#region 指定注释类型
//添加需要删除注释
NotesList.Add("//");
NotesList.Add("/*");
NotesList.Add("*/");
NotesList.Add("<!--");
NotesList.Add("-->");
NotesList.Add("///");
NotesList.Add("<%--");
NotesList.Add("--%>");
NotesList.Add("◇");//这里是本人个性化的注释 可删除
#endregion
}
/// <summary>
/// 循环项目文件并删除注释
/// 实现原理:
/// 循环项目所有指定后缀的子文件 .cs .vue .js.....
/// 然后一行一行读取内容 如果检测到 // /* ... 就剔除
/// 最后重写文件
/// </summary>
public void DeleteNotes(String FilePath)
{
try
{
#region 循环项目文件
//实例化项目目录
DirectoryInfo MyDirectory = new DirectoryInfo(FilePath);
//获取目录下所有文件和子目录
FileSystemInfo[] FileList = MyDirectory.GetFileSystemInfos();
//循环文件
foreach (FileSystemInfo Item in FileList)
{
FileSystemInfo FileInfo = Item;
//判断是否为文件夹
if (FileInfo is DirectoryInfo)
{
//递归调用
DeleteNotes(FileInfo.FullName);
}
else
{
//文件数量
FileAmount++;
//获取文件后缀 带点扩展名 ".xxxx"
String Extension = Path.GetExtension(FileInfo.FullName);
//指定后缀类型文件才操作
if (ExtensionList.Contains(Extension))
{
//操作文件数量
HasActionFileAmount ++;
//--------开始处理文件-----------
try
{
#region 操作文件
//操作单行内容
//读取文件内容 一次读取一行
StreamReader StreamReader = new StreamReader(FileInfo.FullName);
StringBuilder NewContent = new StringBuilder();
//内容行
String Line;
while ((Line = StreamReader.ReadLine()) != null)
{
//是否包含注释
Boolean HasNote = false;
#region 判断是否包含指定注释
//循环指定注释
foreach (var item in NotesList)
{
//判断是否包含注释
if (Line.IndexOf(item)>=0)
{
//只要包含一种注释 就可以终止循环 剔除本行代码
HasNote = true;
break;
}
}
#endregion
//无注释
if (!HasNote)
{
//追加代码内容
NewContent.AppendLine(Line);
}
}
//释放资源
StreamReader.Close();
//重新写入文件内容
File.WriteAllText(FileInfo.FullName, NewContent.ToString());
//成功文件数量
SuccessAmount ++;
//Console.WriteLine("操作文件: 《" + FileInfo.FullName + "》 成功");
#endregion
}
catch (Exception err)
{
//失败文件数量
FailAmount ++;
Console.WriteLine("操作文件: 《"+ FileInfo.FullName + "》 失败,原因:"+err.Message);
}
//--------结束处理文件-----------
}
}
}
#endregion
}
catch (Exception err)
{
Console.WriteLine("操作失败,原因:" + err.Message);
}
}
}
}
本文地址:https://blog.csdn.net/qq_29096549/article/details/107309164
上一篇: golang基础--常量与运算符
下一篇: 淘宝新规严惩广告商品:不能雷声大雨点小