如何通过Intellij的查找功能替换整行代码?

时间:2015-12-12 21:06:36

标签: java intellij-idea replace

我正在尝试找到一种有效的方法,通过项目中的多个文件和类从源代码中删除所有打印语句。

到目前为止,我发现您可以使用Ctrl + Shift + F在包含System.out.println和Ctrl + Shift + R的所有代码中查找用其他内容替换该代码(或者在我的情况下没有任何内容)但是我一直无法找到替换ENTIRE线的方法,只能替换简单的System.out.println

线的部分

是否有一种简单的方法可以让Intellij在行尾选择,这样我就不需要在每次提及时都进入源代码并手动删除它?我在前一个线程中看到尝试System.out.println(*);但这对我不起作用。

2 个答案:

答案 0 :(得分:9)

将regex替换为换行符。

crtl shift r ,选中“正则表达式”,然后

Text to find: .*System\.out\.println.*[\r\n]+
Replace with: <leave blank>

.*与新行字符不匹配,但[\r\n]表达式(在所有Os上)。

答案 1 :(得分:5)

解决方案:

  

您要找的是Structural Search/Replace

     

它没有很好的记录,但它只有非常强大   你完全搞定了。

     

Existing Templates中有一些例子可以   可能会修改和学习,以下将做你自己   现在要求。

以下是:

转到菜单:Edit -> Find -> Replace Structurally并使用以下Search Template

System.out.println($EXPRESSION$);

检查Case Sensitive并制作File Type = Java Source

将所有搜索内容的Scope设置为Project Files

如果您只想删除它,只需确保Replace Template字段为空。

您可以使用Replace Template //System.out.println($EXPRESSION$);/* System.out.println($EXPRESSION$); */

对其进行评论

更好的解决方案:

  

使用Structural Search/Replaceprivate static final Logger L = LoggingFactory($Class$.class);添加到所有类中   System.out.println()陈述。

然后将所有System.out.println($EXPRESSION$);替换为L.info($EXPRESSION$);

你甚至可以做一些复杂的事情,如下所示:

这只是一个示例性的想法,catch的主体只需要System.out.println($EXPRESSION$)一个更复杂的块来抓住其他表达式并保持它们是一个练习阅读器。

try {
  $TryStatement$;
} catch($ExceptionType$ $ExceptionRef$) {
  System.out.println($EXPRESSION$);
}

try {
  $TryStatement$;
} catch($ExceptionType$ $ExceptionRef$) {
  L.error($EXPRESSION$);
}

最佳解决方案:

  

始终使用Logger代替System.out.println()   的一切即可。即使在用于实验的scratch类中,它们最终也会在生产代码中结束!