我想按照一些规则对项目执行批量替换操作。对于例如我在这样的代码中记录:如何在代码中替换字符串
对于每个代码片段,我都要执行替换操作,它将用以下示例中的输出代码片段替换输入代码片段:
输入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