0

与えられたテキスト

public void MyFunction(int i, String str, boolean doIt) {
    Log.i(TAG, "Enter MyFunction(int i, String str, boolean doIt)");

2行目でいくつかの交換をしたいのですが、最初の行ではありません

public void MyFunction(int i, String str, boolean doIt) {
    Log.i(TAG, "Enter MyFunction( i:" + i + ", str:" + str ", doIt:" + doIt + ")");

これまでのところ、次の正規表現を使用して、これらの結果を得ることができます。

「 」を検索「\w+\s+(\w+)([,\)])
に置き換える$1:" + $1 + "$2

public void MyFunction(i:" + i + ", str:" + str ", doIt:" + doIt + ") ") {
    Log.i(TAG, "Enter MyFunction( i:" + i + ", str:" + str ", doIt:" + doIt + ") ");

Log.i行でのみ置換を強制的に実行する方法はありますか?

編集:
次の正規表現 " Log\.i\(.*?\((\s*(\w+\s+(\w+)([,\)]))+"を試しました
が、$ 1、$ 2、$ 3には最後の一致のみが含まれています(最後の引数:doIt)

$ 1 = boolean doIt)
$ 2 = doIt
$ 3 =)

引数ごとに1つずつ、$ 1、$ 2、$3の3つのセットが必要な場合。複数の一致を取得する方法を知っている場合は、それも解決策になります

4

1 に答える 1

0

私は洞窟を作りました、

私はこの小さなperlを使って仕事をしました:

next unless /Log\.i/;
s/TAG,/TAGG/;
s/(final\s+)?[^ \(]+\s+(\w+)([,\)])/$2:\" \+ $2 \+ \"$3/g;
s/TAGG/TAG,/;

コマンドラインで:

perl -pi <scriptname> <file>

それでも誰かが貢献したいのであれば、Javaファイルを処理するためのEclipse外部ツールとしてperlを実行できたと思います。それ、どうやったら出来るの?

アップデート:

外部perlを使用してEclipseIDE内からスクリプトを実行する方法について投稿しました。投稿を
参照してください。

于 2012-06-06T17:46:24.560 に答える