- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.IO;
- public class MyClass
- {
- public static string ReplaceText(string text, string search, string replace, string options)
- {
- RegexOptions ops = RegexOptions.None;
- if (options == null) //纯文本替换
- {
- search = search.Replace(".", @".");
- search = search.Replace("?", @"?");
- search = search.Replace("*", @"*");
- search = search.Replace("(", @"(");
- search = search.Replace(")", @")");
- search = search.Replace("[", @"[");
- search = search.Replace("[", @"[");
- search = search.Replace("[", @"[");
- search = search.Replace("{", @"{");
- search = search.Replace("}", @"}");
- ops |= RegexOptions.IgnoreCase;
- }
- else
- if(options.Contains("I"))ops |= RegexOptions.IgnoreCase;
- text = Regex.Replace(text, search, replace, ops);
- return text;
- }
- public static bool ReplaceFile(string filename, string search, string replace,string options)
- {
- FileStream fs = File.OpenRead(filename);
- //判断文件是文本文件还二进制文件。该方法似乎不科学
- byte b;
- for (long i = 0; i < fs.Length; i++)
- {
- b = (byte)fs.ReadByte();
- if (b == 0)
- {
- System.Windows.Forms.MessageBox.Show("非文本文件");
- return false;//有此字节则表示改文件不是文本文件。就不用替换了
- }
- }
- //判断文本文件编码规则。
- byte[] bytes = new byte[2];
- Encoding coding=Encoding.Default;
- if (fs.Read(bytes, 0, 2) > 2)
- {
- if (bytes == new byte[2] { 0xFF, 0xFE }) coding = Encoding.Unicode;
- if (bytes == new byte[2] { 0xFE, 0xFF }) coding = Encoding.BigEndianUnicode;
- if (bytes == new byte[2] { 0xEF, 0xBB }) coding = Encoding.UTF8;
- }
- fs.Close();
- //替换数据
- string text=File.ReadAllText(filename, coding);
- text=ReplaceText(text,search, replace, options);
- File.WriteAllText(filename, text, coding);
- return true;
- }
- public static void RunSnippet()
- {
- string path=@"D:\\Desktop\\Desktop\\Asm";
- string options=null;
- if (Directory.Exists(path))
- {
- foreach (string f in Directory.GetFiles(path))
- {
- ReplaceFile(f, " using", "@@@@@@@@", options);ReplaceFile(f, "using System.Threading;", "", options);
- ReplaceFile(f, "using System.Text;", "", options);
- ReplaceFile(f, "using System.Text.RegularExpressions;", "", options);
- ReplaceFile(f, "using System.Runtime.Serialization;", "", options);
- ReplaceFile(f, "using System.Runtime.InteropServices;", "", options);
- ReplaceFile(f, "using System.Runtime.CompilerServices;", "", options);
- ReplaceFile(f, "using System.Reflection;", "", options);
- ReplaceFile(f, "using System.Reflection.Emit;", "", options);
- ReplaceFile(f, "using System.Linq.Expressions;", "", options);
- ReplaceFile(f, "using System.IO;", "", options);
- ReplaceFile(f, "using System.Globalization;", "", options);
- }
- Console.Read();
- foreach (string f in Directory.GetFiles(path))
- {
- ReplaceFile(f, "using System.Diagnostics;", "", options);
- ReplaceFile(f, "using System.Collections;", "", options);
- ReplaceFile(f, "using System.Collections.Specialized;", "", options);
- ReplaceFile(f, "using System.Collections.Generic;", "", options);
- ReplaceFile(f, "using Rhino.Mocks.Utilities;", "", options);
- ReplaceFile(f, "using Rhino.Mocks.MethodRecorders;", "", options);
- ReplaceFile(f, "using Rhino.Mocks.Interfaces;", "", options);
- ReplaceFile(f, "using Rhino.Mocks.Impl;", "", options);
- ReplaceFile(f, "using Rhino.Mocks.Impl.RemotingMock;", "", options);
- ReplaceFile(f, "using Rhino.Mocks.Impl.InvocationSpecifications;", "", options);
- }
- Console.Read();
- foreach (string f in Directory.GetFiles(path))
- {
- ReplaceFile(f, "using System.ComponentModel;", "", options);
- ReplaceFile(f, "using Rhino.Mocks.Impl.Invocation;", "", options);
- ReplaceFile(f, "using Rhino.Mocks.Impl.Invocation.Specifications;", "", options);
- ReplaceFile(f, "using Rhino.Mocks.Impl.Invocation.Actions;", "", options);
- ReplaceFile(f, "using Rhino.Mocks.Generated;", "", options);
- ReplaceFile(f, "using Rhino.Mocks.Expectations;", "", options);
- ReplaceFile(f, "using Rhino.Mocks.Exceptions;", "", options);
- ReplaceFile(f, "using Rhino.Mocks.Constraints;", "", options);
- ReplaceFile(f, "using Castle.DynamicProxy;", "", options);
- ReplaceFile(f, "using Castle.Core.Interceptor;", "", options);
- ReplaceFile(f, "@@@@@@@@", " using", options);
- }/*
- Console.Read();
- foreach (string f in Directory.GetFiles(path))
- {
- }*/
- }
- }
- #region Helper methods
- public static void Main()
- {
- try
- {
- RunSnippet();
- }
- catch (Exception e)
- {
- string error = string.Format("---\\nThe following error occurred while executing the snippet:\\n{0}\\n---", e.ToString());
- Console.WriteLine(error);
- }
- finally
- {
- Console.Write("Press any key to continue...");
- Console.ReadKey();
- }
- }
- private static void WL(object text, params object[] args)
- {
- Console.WriteLine(text.ToString(), args);
- }
- private static void RL()
- {
- Console.ReadLine();
- }
- private static void Break()
- {
- System.Diagnostics.Debugger.Break();
- }
- #endregion
- }
- //该片段来自于http://www.codesnippet.cn/detail/2906201512951.html
来源: http://www.codesnippet.cn/detail/2906201512951.html