我正在尝试找到一种有效的方法,通过项目中的多个文件和类从源代码中删除所有打印语句。
到目前为止,我发现您可以使用Ctrl + Shift + F在包含System.out.println和Ctrl + Shift + R的所有代码中查找用其他内容替换该代码(或者在我的情况下没有任何内容)但是我一直无法找到替换ENTIRE线的方法,只能替换简单的System.out.println
线的部分是否有一种简单的方法可以让Intellij在行尾选择,这样我就不需要在每次提及时都进入源代码并手动删除它?我在前一个线程中看到尝试System.out.println(*);但这对我不起作用。
答案 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/Replace
将private 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
类中,它们最终也会在生产代码中结束!