我想按照一些規則對項目執行批量替換操作。對於例如我在這樣的代碼中記錄:如何在代碼中替換字符串
對於每個代碼片段,我都要執行替換操作,它將用以下示例中的輸出代碼片段替換輸入代碼片段:
輸入1:
//+
a++;
//+(+SomeException$SomeMessage)
輸出1:
try
{
a++;
}
catch (AnException)
{
throw;
}
catch (Exception ex)
{
throw new SomeException("SomeMessage", "15", ex);
}
輸入2:
//+
a++;
//-(+InvalidOperationException$SomeMessage)
輸出2:
try
{
a++;
}
catch (InvalidOperationException ex)
{
throw new AnException("SomeMessage", "16", ex);
}
輸入3:
//+
a++;
//-(SomeMessage)
輸出3:
try
{
a++;
}
catch (Exception ex)
{
throw new AnException("SomeMessage", "17", ex);
}
幻數(15,16,17)將增加每個代碼塊這樣評論。我知道這不是最佳做法,但我沒有做出決定,我期望能夠處理這樣的例外情況,所以我認爲我可以通過記筆記和批量更換來緩解痛苦。做這個的最好方式是什麼?我應該編寫自己的代碼來執行替換嗎?還是有一些正則表達式替換工具或類似的東西可以自動爲我做這件事?
更新:這是一次性工作,我的幻數必須是全球唯一的。所以如果在文件中的最後一場比賽中是25,那麼下一個文件中的第一場比賽必須是26。
不幸的是,我不知道Perl和我不是想寫一個DSL。我只想替換我的代碼中的一些字符串,並增加每場比賽的魔術數字。 – 2009-06-12 22:25:26
我認爲你正在嘗試實現你的源代碼的評論中存在的DSL。這聽起來像是爲你寫的。 :) 像這樣的實現操作不僅僅是一個簡單的搜索和替換問題,您需要解析輸入並根據輸入被解析的方式發出符號。這是編譯器的工作,你可能需要編寫或使用它。 – 2009-06-12 22:49:00