使用RegEx或Macro等来处理/生成text..Macro ... Script等

时间:2015-06-02 17:20:04

标签: c# regex

我正在尝试改进/自动化一些重复的编程任务。

我有一堆像这样的文件(数百个),有一些像这样的字段声明: (这个只有66个声明)

string _id = string.Empty;
string _itemid = string.Empty;
string _upc = string.Empty;
int? _unitid;
...etc...

然后我必须为每一行生成代码,如下所示:(当然只有第一行)

/// <summary>
/// Allows modification from default value
/// </summary>
/// <param name="id">blah blah</param>
/// <returns>Builder object to allow fluent method chaining</returns>
public ItemBuilder WithId( string id )
{
   this._id = id;
   return this;
}

一切都是锅炉板,只有两个值可以通过正则表达式宏解析为变量。

类型声明,如string,int? bool,DateTime等。这个可以按原样填入样板代码。

接下来将读取var名称,例如_id,_itemid,_upc等。但不同之处在于需要进行一些操作。

  1. _id变为Id并带有前缀以生成WithId。
  2. _id成为id并且被分成两个点。
  3. _id按原样放入一个地方。
  4. 每一行都遵循这种模式。

    在C#中写一个片段看起来像这样,但问题在于让每一行都生成。

    /// <summary>
    /// Allows modification from default value
    /// </summary>
    /// <param name="$ParmVarName$">Used to assign...to be built with.</param>
    /// <returns>Builder object to allow fluent method chaining</returns>
    public $BuilderObject$ With$MethodName$( $ParmType$ $ParmVarName$ )
    {
      this._$ParmVarName$ = $ParmVarName$;
      return this;
    }
    

    我想将声明(上例中的66)复制到文本编辑器然后运行我的“宏”来生成66个方法然后我可以剪切并粘贴回代码文件。

    因此,如果在Visual Studio,Edit Plus Plus,LinqPad等中有某种方法来创建模板,处理字段声明,然后用每行的值填充模板,我将非常有兴趣学习.. ..

    请理解我不是要求你做我的作业[但我不会阻止你:)]只是告诉我需要了解的主题/能力。

    由于

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容进行匹配:

^([^\s]+)\s+_([^\s;]+)?.*

提取/替换为:

public ItemBuilder With$2( $1 $2 )\n{\n\tthis._$2 = $2;\n\treturn this;\n}

请参阅DEMO