繁体   English   中英

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

[英]Convert text of a C# project into 1 text file

因此,我正在执行Google Code Jam,对于新格式,我必须将代码作为单个文本文件上传。

我喜欢将代码编写为正确构造的类和多个文件,即使在时间紧迫的情况下(与浪费的时间相比,我也节省了更多的时间来保持清晰和自己的调试速度),并且我想重新使用通用代码。

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

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

有更好的选择吗? 理想的工具是JustDoIt对我有用吗? 或者,如果我可以实施一些可预测的算法,而无需进行任何手动调整?

  1. 编写您的类,以便所有“使用”都在“命名空间”内
  2. 编写一个脚本,收集所有* .cs文件并将其串联

在此处输入图片说明

这可能不是执行此操作的最佳方法,但这是一种可以满足您需要的算法:

  • 遍历每个文件并使用“ using ”开始抓取using “-”开头的每一行->将它们写入临时文件/缓冲区
  • 检查重复项并将其删除
  • 获取字符序列“ namespace ”之后的第一个“ { ”的位置
  • 拿到最后“的位置}在文件”
  • 将这两个位置之间的文本附加到临时文件/缓冲区
  • 将第二个文件/缓冲区追加到第一个
  • 写出合并缓冲区

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

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运算符并在名称空间中使用全名。

另外,以下几个链接可能很有用: 合并文件Java中的合并文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM