概述
使用正则表达式对文件名执行查找与替换功能.
-
Download source code - 20.8 Kb
-
Download Binary (x64) - 8 Kb
-
Download Binary (x86) - 8.1 Kb
介绍
这个程序的目的是让你可以正则表达式查找和替换文件名.起初你可能会觉得这是一件很陌生的事情.然而想像一样,你有一个装满文件的文件夹,它允许使用两种不同的命名规则----包含同样的信息,只是以不同的方向显示.如果你想把这些文件名标准化,那么你需要独立地修改每一个文件名.对成千成万个文件进行重命名非我所好,所以我写了这个程序通过文件名进行和替换.
使用这个程序
打开程序后,你可以选择要执行查询和替换操作的文件夹.在此项同时在它的子目录下进行查找.
查找和替换部分允许你输入你想要执行的查找和替换操作使用的正则表达式,在这里使用标准正则表达式的语法.如果你正在找一个工具来测试或者设计正则表达式,我很高兴地为您推荐Code Project上的 Expresso.
在find(查找)文本框中,你同时会得到一个正则表达式选项的集合,如果没有任何东西时,推荐你把Compiled(编译?)状态打开,这将在很大程度上提高速度.
在运行正则表达式覆盖文件名之前,建议您以测试方式进行运行.这种方式将做除覆盖文件名之外的所有工作.这样您可以查看一下结果,并确认运行是否正确.不能使用此程序撤消对文件名的修改;我不想为把数千个文件名改成毫无意义的垃圾负责.
测试正则表达式
在文件菜单下面,你将可以有”保存”和”载入”工程的功能.这只是把所有文本框和复选框的值保存到XML文件中,以供日后装载.这就避免了你以后要回忆起或者重新写一个非常复杂的正则表达式的情况.
它是如何工作的
这个程序的代码是令人难以置信地简单,根本没有什么非常复杂的地方.所以实际对文件名的处理都在frmReplace中. ReplaceFiles方法执行了所有的操作,它得到了一个文件列表,并且迭代地对每一个进行文件,检查是否与正则表达式匹配.如果匹配,则作为写的一项写入到列表控件中,并且对文件进行重命名.
... {
// move the progress bar along
pbReplace.Value = ++i;
// find just the file name.. no need to replace anything in the path
string name = Path.GetFileName(file);
// does it match the expression?
if (rex.IsMatch(name))
...{
// find out the new name after replacement
string newName = rex.Replace(name, replace);
// the path that this came from
string path = Path.GetDirectoryName(file);
// add an item to the list showing the replacement
lstReplacements.Items.Add(
path + Path.DirectorySeparatorChar + name + " -> " +
path + Path.DirectorySeparatorChar + newName);
// 只是试运行时不替换文件名
if (!testOnly)
...{
// 替换文件名
File.Move(path + Path.DirectorySeparatorChar + name,
path + Path.DirectorySeparatorChar + newName);
}
}
}
结束语
这是一篇非常短小的文章.事实上,一个用大约60行代码就完成所有功能的程序也没有太多可探讨的.希望您觉得这个程序有用.
修改日志
2007年1月10号, 第一版.
原文地址
最后
以上就是单薄小霸王为你收集整理的[翻]使用正则表达式查找和替换文件名的全部内容,希望文章能够帮你解决[翻]使用正则表达式查找和替换文件名所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复