0

Notepad ++を使用して、検索置換を使用してファイル内のすべてのJavaメソッドに2行のコードを追加できる正規表現を探しています

前:

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

後:

public void startProcessing() {

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

これは可能ですか? はいの場合、誰かがコードで私を助けることができます...またはこれを行うための他の可能な方法について私を案内してください。

4

1 に答える 1

2

「悪いニュース」から始めるために、照合するためのはるかに優れた指紋がない限り、「Exiting」行を挿入することはできません。現在のコードサンプルでは、​​一致させることができる最良のものはで}あり、大げさな推測として、コード全体に中括弧がたくさんある可能性があります。

「開始」行を挿入することは可能ですが、堅牢性は入力によって異なります。

サンプルコードと同じ行(または同じ形式で関数名が異なる)を常に置換する場合は、[検索+置換]メニューで次の操作を実行できます。

探す:

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_$]しましたが、必要に応じて調整できます。

UPDATE(get / setメソッド
を無視する)またはなどのget / setメソッドを無視するには、次のgetFieldValueUnits()setFieldValueUnits(int val)を使用できFindます(これReplaceは上記と同じです)。

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

getこれは、またはで始まらないset(そして上記のようにとして宣言されている)すべての関数に一致しますpublic void

于 2012-12-13T06:13:05.950 に答える