【发布时间】:2015-08-14 00:45:20
【问题描述】:
我有许多 java 源文件,我想在项目中的每个 java 文件中将一个代码块更改为另一个代码块。
例如 我的项目有大约 300 个 java 源文件,每个文件都有这个代码块
while (p.getCurrentToken() != JsonToken.END_OBJECT) {
p.nextToken();
field = p.getCurrentName();
obj.populateFromJsonString(field, p);
}
我想将此代码块替换为
while (p.nextToken() != null) {
field = p.getCurrentName();
if(field!=null){
obj.populateFromJsonString(field, p);
}
}
在所有 java 文件中。代码块中的对象obj对于不同的文件是不同的
我知道这可以通过sed 和awk 的文本处理来完成。我正在考虑编译器读取和解析java源文件的替代解决方案。可能有一些基于这种方式的应用程序可以解决我的问题。
请分享解决此问题的方法或应用程序。也欢迎基于 sed/awk 的解决方案。
【问题讨论】:
-
那不是 DRY。我会考虑如何将其重构为可以修改一次并多次调用的方法。像 IntelliJ 这样严肃的 IDE 可以做到。
-
我已经更新了我的问题,即代码块中的对象
obj对于不同的文件是不同的 -
并且有超过 300 个文件,所以我需要自动化它,所以我猜 IDE 不会帮助我
-
为什么不使用java,例如问题在python中很容易解决
-
是的,这可以通过 python 或任何其他支持文件输入输出的编程语言来解决。对于 python,我们可以使用 fileinput 模块进行就地编辑。
标签: java regex awk sed text-processing