簡體   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