不确定这是否可行,但我正在尝试在IntelliJ IDEA中进行动态查找/替换......
在我的Java项目中,有几种方法包含字符串连接,如下所示:
return "[foo=" + foo + ", bar=" + bar + ", this=" + this + ", that=" + that + "]";
我编写了以下RegEx来查找所有这些事件:
return (\"[^\"]+\")+((\s\+\s)+([\pL\pN\r\s]*)+(\s\+\s)+(\"[^\"]+\"))*;
现在我想用等效的String.format()
返回替换这些连接,如下所示:
return String.format("[foo=%s, bar=%s, this=%s, that=%s]", foo, bar, this, that);
我的替代RegEx到目前为止看起来像这样:
return String.format\($1$6,$4\);
...但是这里发生了一些事情,还有一些棘手的要求。
$4
是空的。$6
仅返回最后一次出现的(\"[^\"]+\")
。$4
生成“,$ 4”。$1
和$6
中删除引号,并在任何“=”符号后附加“%s”。这可能吗?知道怎么做,允许连接任意数量的字符串吗?
提前致谢!
答案 0 :(得分:2)
您不需要正则表达式查找和替换。如果将光标置于字符串连接的中间,则应出现黄色灯泡。如果你点击灯泡(或者更好,alt-Enter),它应该给你至少三个不同的代码重构。
请参阅意向文档here。