-5

我需要在我的应用程序的许多地方更改代码。

我的应用程序中有两个库。我必须删除一个库,并且必须使用第二个库的组件才能使功能像以前一样工作。

我已经找到了哪些组件可以替换为哪些组件。就像我在第一个库中有大约 30 多个类,它们将替换第二个库组件。

是否可以创建任何脚本,我可以在其中指定哪些文本将被替换以及由哪些文本替换。

例如:A 替换为 B,C 替换为 D,E 替换为 F,G 替换为 H 等等。

它将类似于查找和替换,但不是手动的。

该应用程序在 C# 中。

4

2 回答 2

1

下面的代码将完成需要。

var replaces = new Dictionary<string, string>() { { "A", "B" }, { "C", "D" }, {"E","F"} };
var files = Directory.GetFiles(@"C:\Folder\", "*.txt",SearchOption.AllDirectories);
foreach (var file in files) 
{
  var text = File.ReadAllText(file);

  foreach (KeyValuePair<string, string> ky in replaces)
  {
       text = text.Replace(ky.Key.ToString(), ky.Value.ToString());
  }

  string [] splittedpath = file.ToString().Split('\\');

  string DirectoryPath = @"C:\Folder\Replaced Files\";
  string FilePath = "";

  for (int i = 0 ; i < splittedpath.Length ; i++)
  {
      if (i != 0 && i != 1 && i != (splittedpath.Length -1))
      {
          DirectoryPath = DirectoryPath + splittedpath[i].ToString() + @"\"; 
      }

       if(i == (splittedpath.Length -1))
       {
           FilePath = DirectoryPath + splittedpath[i].ToString();
       }
  }

  Directory.CreateDirectory(DirectoryPath);
  File.WriteAllText(FilePath, text);
}

这将创建具有相同目录结构的新文件,并且不会替换现有文件。

于 2013-04-29T04:58:31.597 回答
0

为此开发一个自定义工具。

  var replaces = new Dictionary<string, string>() { {"A","B"}, {"C","D"}, ...};
  var files = Directory.GetFiles(path, "*.cs", Recursive);
  foreach (var file in files) {
       var text = File.ReadAllText(file);
       foreach(var replace in replaces) text = text.replace(replace.key, replace.value);
       File.WriteAllText(file);
  }

如果你想处理多线需要一些努力......但也可以完成。也许使用正则表达式是个好主意......

于 2013-04-26T07:50:17.933 回答