0

鉴于文本

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

我想在第二行做一些替换,但不是第一行

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=布尔值 doIt)
$2=doIt
$3=)

当应该有 3 组 $1,$2,$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>

如果有人仍然想贡献一些,我知道我可以运行 perl 作为 Eclipse 外部工具来处理 java 文件。我怎么做?

更新:

我写了一篇关于如何使用外部 perl 从 Eclipse IDE 中运行脚本的帖子,
请参阅帖子

于 2012-06-06T17:46:24.560 回答