我需要从eclipse上的代码中删除所有System.out语句。
示例:
System.out.println("hello");
System.out.println("hello" +a);
System.out.println(1 +b12);
基本上所有System.out
语句,无论它们的参数是什么。
我必须接下来但是它甚至没有接近
的System.out.println(。)* ;?``
答案 0 :(得分:6)
作为替代方案,您可以尝试使用程序顶部的System.setOut(somePrintStream)
将System.out重定向到其他地方(或无处)。
如果您在Eclipse中运行,它还允许您指定System.out应该去的位置而不是正常的控制台视图(在运行配置中的某个位置)。
如果这是为了摆脱调试日志记录,请考虑将其替换为什么,而不是调用日志框架。然后你可以在运行时打开或关闭它。
答案 1 :(得分:3)
您可以使用以下正则表达式,只需查找和替换即可。在Eclipse
中可以选择正则表达式查找和替换。
System.out.println\(([^;].*\)*);
我测试了以下
System.out.println(" ");
System.out.println(" fdfdf");
System.out.println(") fdfdf");
System.out.println(";");
System.out.println();
This可以帮助您在Eclipse
Here是正则表达式在线测试。我在那里放了一些数据。任何人都可以用任何东西进行测试。
答案 2 :(得分:3)
我会采取以下(无可比拟的风)路线:
my.domain.ReplaceHelper
public static void helpMeToReplaceSysouts(Object obj) {}
System.out.println
的{{1}}
my.domain.ReplaceHelper.helpMeToReplaceSysouts
方法。答案 3 :(得分:2)
为什么你不能尝试这个呢?它也能完成这项工作!
在Eclipse中, CTRL + F 会显示Find/Replace
窗口。在那里给出以下字符串,
查找字符串 - System.out.println
替换字符串 - //System.out.println
Hurray,你注释掉了所有的sysouts!
答案 4 :(得分:1)
这很难有几个原因:
println
参数中可能存在任意复杂的语句,例如println(doA(4+(-1))+format(");");
,这使得使用正则表达式查找println
语句的结尾非常困难。唯一可靠的方法是根据代码的类型2属性(如Brandon pointed out)解析代码,或者将其留给eclipse的重构方法(如R.J stated)等工具。^\s*System\.out\.println\(.*);\s*$
,但不会捕获多行 - println
- 语句总体而言:Thilo's answer是最佳选择。虽然这意味着您的代码必须已经相应地编写。
答案 5 :(得分:0)
.*
来捕获整个程序,因此请使用一些未出现在输出语句中的分隔符,例如;
总而言之,我会使用像
这样的东西System.out.println\([^;]*\);
答案 6 :(得分:0)
最简单的方法是忽略括号。唯一确定的是,声明将以“;”结尾并且很可能(取决于代码样式)使用新行。
没有换行符,.*?
很有可能匹配任何你不匹配的内容。
^System\.out\.println.*?;\s*$
答案 7 :(得分:0)
其他一些建议将获得大部分建议,但它们大多会忽略几个迂腐的情况,例如SomeOtherSystem.out.println,或者“此字符串包含System.out.println()”甚至“类系统” (){public Someting out; ...}; System.out.println(“这不是你认为的那样”);
最终,你无法单独使用正则表达式来完全理解Java。听起来你只想一次从你自己的代码库中删除它们,所以只需使用它并检查结果。
如果你想真正自动化这个(例如,如果你想构建一个工具来做到这一点),我建议你使用真正的Java解析器,如下所示:https://code.google.com/p/javaparser/
答案 8 :(得分:-2)