当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > C#初学乍练-文本替换工具命令行版

ASP.NET
asp.net Linq TO Sql 分页方法
asp.net 用XML生成放便扩展的自定义树
asp.ent下合并两个结构相同的DataTable
asp.net 遍历repeater中的控件的几种方式
asp.net 处理原文件中过长的viewstate代码
asp.net下遍历页面中所有的指定控件的代码
获取创建Membership的数据库创建脚本
asp.net AJAX注册类
asp.net 处理F5刷新页面重复提交页面的一个思路
ASP.NET 缓存分析和实践浅析提高运行效率
asp.net 读取并显示excel数据的实现代码
ASP.NET中常用的用来输出JS脚本的类
ASP.NET中内嵌页面代码的一个问题
asp.net(C#)操作excel(上路篇)
一个基于Asp.Net MVC的权限方案
ASP.NET实例教程:51job网站地区选择功能
ASP.NET教程:友好的Html和JS适合SEO
ASP.NET教程:使用.ashx文件去除重复内容
ASP.NET做SEO:制作架构清晰和更新及时的网站地图
ASP.NET优化:Sql注入和Html注入的黑帽SEO

ASP.NET 中的 C#初学乍练-文本替换工具命令行版


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 53 ::
收藏到网摘: n/a


该程序使用正则表达式进行文字替换,广度优先遍历子目录(基础知识很重要), 解决无法替换回车换行的问题
class Replacee
{
///
/// 替换文件中字符
///

///
文件全名
///
用于替换的字符串
///
用于查找的字符串
///
是否备份文件
private static void DoReplace(string fileFullName, string replacedBy, string findPattern, bool isBackup)
{
string result = string.Empty;
string inputText = string.Empty;
string replacement = replacedBy;
string pat = findPattern;
Regex r = new Regex(pat, RegexOptions.IgnoreCase);
try
{
using (StreamReader sr = new StreamReader(fileFullName))
{
inputText = sr.ReadToEnd();
}
// Compile the regular expression.
if (r.IsMatch(inputText))
{
if (isBackup == true)
{
try
{
File.Copy(fileFullName, fileFullName + ".bak");
}
catch(System.IO.IOException ex)
{
File.Copy(fileFullName, fileFullName + ".bak", true);

Console.WriteLine(ex.Message);
}
}
result = r.Replace(inputText, replacement);
// Add some text to the file.
using (StreamWriter sw = new StreamWriter(fileFullName))
{
sw.Write(result);
}
}
Console.WriteLine(fileFullName);
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
//throw(e);
}
}
///
/// 遍历目录
///

///
起始路径
///
用于替换的字符串
///
用于查找的字符串
///
是否备份文件
///
是否获取子文件夹
public static void TravelReplace(string path, string replacedStr, string findPattern, bool isBackup, bool isGetSubFloder)
{
Queue queue = new Queue();
DirectoryInfo di = null;
string subPath = string.Empty;
string currentPath = string.Empty;
FileSystemInfo[] dirs = null;
queue.Enqueue(path);
while (queue.Count > 0)
{
currentPath = (string)queue.Dequeue();
di = new DirectoryInfo(currentPath);
//get files under current directiory
FileSystemInfo[] files = di.GetFiles("*.sql");
foreach (FileSystemInfo f in files)
{
DoReplace(f.FullName, replacedStr, findPattern, isBackup);
} // Get only subdirectories
if (isGetSubFloder == true)
{
dirs = di.GetDirectories();
foreach (FileSystemInfo d in dirs)
{
subPath = d.FullName;
queue.Enqueue(subPath);
Console.WriteLine(subPath);
}
}
}
}
} 测试: Replacee.TravelReplace(@"E:\temp\ttt", "\r\n);", @"(\r\n){2,}\);", true, true);