将C#项目的文本转换为1个文本文件

时间:2018-04-22 09:46:36

标签: c#

所以我正在使用Google Code Jam,对于他们的新格式,我必须将我的代码作为单个文本文件上传。

我喜欢把我的代码写成正确构造的类和多个文件,即使在时间压力下(我发现我在清晰度和自己的调试速度上节省了更多的时间,而不是浪费时间。)我想重复使用共同代码。

完成代码后,我必须将多个文件中的一系列类转换为单个文件。

目前我只是手动将所有文件的文本复制并粘贴到一个文件中,然后手动按摩使用和命名空间以使其全部工作。

有更好的选择吗? 理想情况下,JustTIt对我来说是一个工具吗? 或者,如果有一些我可以实现的可预测算法,不需要任何手动调整?

3 个答案:

答案 0 :(得分:3)

  1. 编写您的类,以便所有“使用”都在“命名空间”
  2. 编写一个收集所有* .cs文件并连接它们的脚本
  3. enter image description here

答案 1 :(得分:0)

这可能不是最佳方式,但这是一种可以满足您需求的算法:

  • 遍历每个文件并抓住以" using"开头的每一行 - >将它们写入临时文件/缓冲区
  • 检查重复项并将其删除
  • 获得第一个' {'的位置在charsequence" namespace"
  • 之后
  • 获取最后一个&{39; }'的位置在文件
  • 将这两个位置之间的文本附加到临时文件/缓冲区
  • 将第二个文件/缓冲区附加到第一个文件/缓冲区
  • 写出合并缓冲区

答案 2 :(得分:0)

这是非常主观的。我在伪代码中看到了以下算法:

usingsLines = new HashSet<string>();
newFile = new StringBuilder();
foreeach (file in listOfFiles)
{
    var textFromFile = file.ReadToEnd();
    var usingOperators = textFromFile.GetUsings();
    var fileBody = textFromFile.GetBody();
    newFile+=fileBody ;
}
newFile = usingsLines.ToString() + newFile;
// As a result if will have something like this
// using usingsfromFirstFile;
// using usingsfromSecondFile;
// 
// namespace FirstFileNamespace
// {
// ...
// }
// 
// namespace SecondFileNamespace
// {
// ...
// }

但请记住,如果两个不同的名称空间包含相同的类等,这种方法可能会导致名称空间冲突。要解决它,您需要手动修复它,或者除去using运算符并使用名称空间的全名。

这几个链接也许有用: Merge filesMerge file in Java