我有一个巨大的旧软件项目,我想把它集成到我自己的项目中。为此,我想替换所有
System.out.println("x")使用
Logger.log("x", Level.Info)如何使用Eclipse做到这一点?
编辑:
例如:
System.out.println("x") --> Logger.log("x", Level.Info)
System.out.println("abc") --> Logger.log("abc", Level.Info)
System.out.println(myObject) --> Logger.log(myObject, Level.Info)我只想用一个命令就能做到。
发布于 2011-10-26 20:31:34
Eclipse支持多文件搜索和替换方法。预览:
checked as >> System.out.println(("^"*"))
Regular Expression Checkbox选中
这是一个非常简单的方法,使用表达式“^”来精确匹配两个引号和其间的所有内容。如果程序中的文本比较复杂,则必须相应地调整此方法,例如,使用“^”不能执行以下操作。
System.out.println("x"+"y");
System.out.println("x"+2);
System.out.println("x:\"3\"");请明智地使用它。
发布于 2011-10-26 20:14:27
所以基本上你想用Logger.log("same random text here",Level.info);替换System.out.println("random text here");。我不认为这在Eclipse中是可能的,但你可以做一个小的Java程序,它从你的项目中读取所有的*.java文件,进行替换,然后重新输出它们,类似于:
public static void main(String args[]) {
String source = "System.out.println(\"text\");";
String sourcePrefix = "System.out.println(\"";
String sourceSuffix = "\");";
String targetPrefix = "Logger.log(\"";
String targetSuffix = "\",LogLevel.info);";
String replaced = source.replace(sourcePrefix, targetPrefix).replace(sourceSuffix, targetSuffix);
System.out.println(replaced);
}发布于 2011-10-26 20:35:23
我更喜欢文本替换,就像你建议的那样,但也有可能使用以下内容完全重定向System.out:
Logger logger = Logger.getLogger("stdout");
LoggingOutputStream los = new LoggingOutputStream(logger, StdOutErrLevel.STDOUT);
System.setOut(new PrintStream(los, true)); https://stackoverflow.com/questions/7902219
复制相似问题