【问题标题】:Reformatting a lot of classes重新格式化很多类
【发布时间】:2012-05-15 18:51:16
【问题描述】:

在一个旧的 Java 项目中,我有很多重新格式化工作要做。

我有超过 300 个由工厂创建的不同类,我想使用 Eclipse 插件或工具自动更改。

我需要为 300 个类(如上面的 Foo 类)删除相同的参数,并且每次都更改母类名称。

示例:

public Foo extends **OldClass** {

    public Foo(A a, **B b**){
        //..
    }

}

public Foo extends newClass {

    public Foo(A a){
        //..
    }

}

我还希望能够“批量查找和替换”很多声明。我的意思是,我想要一个带有替换列表(带有正则表达式模式)的工具,并且只需单击一下即可替换所有内容。

你知道我该怎么做吗?我在 Windows 7 系统上。

【问题讨论】:

  • 请原谅我的缩进,我不知道为什么它不起作用。
  • 您能否澄清一下,您要对所有 300 个文件进行相同的替换(例如,将 'OldClass' 替换为 'NewClass' 300 次),还是在文件之间有所不同?

标签: eclipse reformatting


【解决方案1】:

您可以使用 Eclipse 的搜索对话框 (Ctrl+H) 来执行此操作。在“搜索”按钮旁边有一个“替换”按钮。这可用于查找多个文件中的每个匹配项(例如,指定与 *.java 匹配的每个文件名),并在单个用户操作中替换它们。

一旦您配置了搜索条件(例如“extends OldClass”)并进行搜索,您将看到一个对话框以输入替换值(例如“extends NewClass”)。为该对话框按“确定”后,它将进行搜索和替换。

这也允许在搜索和替换中使用正则表达式(我假设这将允许使用正则表达式组捕获,但我尚未对其进行测试)。应该可以将相同的原则应用于您还想删除的参数。

请注意,如果您只想修改同时出现 extends OldClass, B b) 的类,并且它们可以独立出现,则会变得更加棘手。

【讨论】:

  • 是的,但我需要为我想要更改的所有内容执行此操作。我想批量搜索替换..
  • 除非我对“批​​处理”有不同的理解,否则这应该是可能的。我的意思是你想在一个动作中为每个文件执行它(这允许它搜索多个文件),如果你的意思是你想将它作为一个单独的任务自动运行,道歉。
  • 我不会说英语,也许我的帖子不清楚 :) 在最坏的情况下,我每次都会使用 CTRL + H。谢谢!
  • 没问题,你的英语会比我的 $ANY_LANGUAGE_YOU_SPEAK 好得多 :-) 我试图澄清我的答案,以表明它适用于所有 300 个班级一个 i> 搜索/替换。所以它 not 像在单个文件中工作的 Ctrl+F 查找/替换。希望有帮助。如果我仍然有误解,请告诉我。
  • 它可以这样工作,但文件名中的模式正则表达式不起作用?
【解决方案2】:

如果当前代码不是太复杂,你可以用 sed 侥幸,例如,

find . -type f -iname '*.txt' -exec sed -i 's,this,that,g' {} +

【讨论】:

  • @Pier-alexandreBouchard 在 Windows 下,您可以安装 Cygwin 以访问一些基于 Linux 的简洁文件处理工具,包括 find 和 sed。
  • @ChristianSemrau 我正在寻找插件或小工具,因为我无法在我工作的计算机上安装任何软件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-17
  • 2019-02-01
  • 1970-01-01
相关资源
最近更新 更多