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

Efi*_*fie 4 java replace intellij-idea

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

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

有一个简单的方法来获得的IntelliJ通过线的末端选择,这样我就不需要进入源代码在每提,并手动删除它?我在前一个线程中看到尝试System.out.println(*); 但这对我不起作用.

Boh*_*ian 10

使用正则表达式替换换行符.

crtlshiftr,然后检查"正则表达式"

Text to find: .*System\.out\.println.*[\r\n]+
Replace with: <leave blank>
Run Code Online (Sandbox Code Playgroud)

.*将不会匹配换行符,但表达式[\r\n](在所有Os上).


小智 5

解:

您正在寻找的叫做Structural Search/Replace

它没有很好的文档记录,但是一旦完全完成它,它就会非常强大

Existing Templates您可能可以修改和学习其中的一些示例,下面的示例将满足您现在的要求。

方法如下:

进入菜单:,Edit -> Find -> Replace Structurally然后使用以下命令Search Template

System.out.println($EXPRESSION$);
Run Code Online (Sandbox Code Playgroud)

检查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$);
}
Run Code Online (Sandbox Code Playgroud)

try {
  $TryStatement$;
} catch($ExceptionType$ $ExceptionRef$) {
  L.error($EXPRESSION$);
}
Run Code Online (Sandbox Code Playgroud)

最佳解决方案:

始终在 所有内容中使用Logger而不是。即使在用于实验的类中,它们最终还是最终会在生产代码中出现!System.out.println()scratch