使用Regex在Notepad ++中快速将代码添加到Java方法

时间:2012-12-13 05:48:30

标签: regex eclipse notepad++

我正在寻找正则表达式,它允许我使用搜索替换为使用Notepad ++的文件中的所有java方法添加2行代码

之前:

  public void startProcessing() {
      ..............
      ..............
               }

后:

  

public void startProcessing(){

  logger.info( "Entering into startProcessing" );
  ..............
  ..............
  logger.info( "Exiting startProcessing" );
           }

这是可能的,如果是的话,任何人都可以帮助我使用代码......或者以任何其他可能的方式指导我这样做。

1 个答案:

答案 0 :(得分:2)

要从“坏消息”开始,您将无法插入“退出”行,除非您有更好的指纹来匹配。使用您当前的代码示例,您可以匹配的最佳值是},并且,作为一个疯狂的猜测,您的代码中可能有很多结束 - 大括号。

要插入“Starting”行是可行的,但健壮性取决于您的输入。

如果您总是想要替换示例代码中的相同行(或相同格式但功能名称不同),您可以在Find + Replace菜单中执行以下操作:

查找

public void startProcessing() {

替换:

public void startProcessing() {\n\tlogger.info("Entering into startProcessing");

搜索模式:Extended

如果您想动态使用非硬编码的函数名进行替换,可以尝试以下操作:

查找

(public void )([a-zA-Z0-9_$]+)(.*)

替换:

\1\2\3\n\tlogger.info\("Entering into \2"\);

搜索模式:Regular Expression

这种“动态”方法将需要您以相同格式声明的任何方法public void functionName...。我使用[a-zA-Z0-9_$]作为函数名称的字符集,但您可以根据需要进行调整。

更新(忽略获取/设置方法)
要忽略get / set方法,例如getFieldValueUnits()setFieldValueUnits(int val),您可以使用以下Find值(Replace与上面相同):

(public void )(?!get|set)([a-zA-Z0-9_$]+)(.*)

这将匹配所有不以getset开头的函数(并声明为public void,如上所述)。