C#初学乍练-文本替换工具命令行版

2016-01-29 12:30 7 1 收藏

C#初学乍练-文本替换工具命令行版,C#初学乍练-文本替换工具命令行版

【 tulaoshi.com - ASP.NET 】


该程序使用正则表达式进行文字替换,广度优先遍历子目录(基础知识很重要), 解决无法替换回车换行的问题
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:tempttt", "rn);", @"(rn){2,});", true, true);

来源:http://www.tulaoshi.com/n/20160129/1486391.html

延伸阅读
标签: 服务器
mac命令行终端怎么输入密码 mac命令行终端输入密码方法   mac命令行终端怎么输入密码?mac终端需要输入密码有的时候输入密码没有用,或者不能输入密码。下文小乐哥给大家分享经过自己的摸索和使用整合出的mac命令行终端输入密码方法,一起来看看吧! mac命令行终端输入密码方法 1、首先你得有一个账户密码,没密码不行,必...
标签: 电脑入门
WinRAR支持命令行执行压缩与解压缩等,而且就一个rar.exe就能支持图形界面的很多操作,特别方便远程管理等 我的实例: 将D:/wk.doc压缩为:final.rar d:/winrar/rarad:/final.rard:/wk.doc 将final.rar中的wk.doc解压到F:盘 rared:/final.rarF: 将final.rar转换成自解压文件 rarsfinal,rar(默认转换到同级目录下了) 给自解压文...
    命令行一直是Linux用户用来解决问题的首要选择。当需要做某件事时,你只要想好如何去做,从那时起你就知道该如何做了。     不过很少有人花些时间系统地了解处理工具在处理过程中的输入和输出。因此对于最基本实用工具的功能可能并不是很了解。在本文中,我们将讨论所有shell工具箱中都有的一个重要工具:f...
     要想从命令行启动mysqld服务器,你应当启动控制台窗口(或“DOS window”)并输入命令: C: C:Program FilesMySQLMySQL Server 5.0inmysqld 根据系统中MySQL安装位置的不同,前面的例子中使用的路径也不同。 在非NT版本的Windows中,在后台启动mysqld。也就是,服务器启动后,你应当可以看见后面的命...
标签: 服务器
mac命令行终端怎么卸载软件 mac命令行终端卸载软件教程   mac命令行终端怎么卸载软件?mac os系统卸载软件方式有多种, 卸载工具,程序图标拖拽到垃圾桶皆可,但对顽固残留软件该怎么办呢?下文小乐哥分享mac命令行终端卸载软件教程,一起来看看吧! mac命令行终端删除文件教程 1 打开终端应用程序 2 输入命令:sudo (...

经验教程

114

收藏

11
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部