【问题标题】:Eclipse: Replace multiple, different regexes simultaneouslyEclipse:同时替换多个不同的正则表达式
【发布时间】:2018-06-21 20:40:21
【问题描述】:

我目前正在尝试用不同但相似的测试框架替换旧的 (java) 测试框架。因此,由于大多数旧框架代码的出现在 90% 的情况下都是相同的(在相同的变量名称、参数类型等意义上),因此替换它们非常简单且相当重复。

因此,我给自己写了一些正则表达式匹配(效果很好,它们不是这个问题的重点)。

但是,我有大量不同的测试文件,而且我已经在这一点上 - 刚刚开始 - 我想要应用 6 个不同的匹配/替换对。
现在显然,作为一名计算机科学家,我很想自动化这个,而不是遍历每个文件,按 Ctrl+F,粘贴匹配的正则表达式,粘贴替换正则表达式,按下替换按钮,重复这个循环 5 次以上,并且然后移动到下一个文件。

所以,为了简单起见,这些是我的正则表达式:

//matches the existing framework
OldClass (.*?) = new OldClass("string");
//replacement regex:
NewClass $1 = new NewClass("string");

//example replacement:
OldClass foo = new OldClass("string");
//becomes:
NewClass foo = new NewClass("string");

那么,如果我想在许多不同的文件中替换其中的几个匹配/替换对 - 我可以使用任何内置的 eclipse 功能,还是有提供此功能的扩展?

请注意,我知道我可以编写一个简单的 java 程序,它只浏览我的所有源代码并根据需要应用正则表达式。
不过,我宁愿避免花费这些时间,特别是还希望有机会将它们单独应用于每个文件,这样我就可以在之后重新运行测试并确保没有任何问题 - 发生,因为过于复杂和特定的情况,并非所有旧框架代码都可以自动替换。不过,由于我还要删除旧的导入,这将破坏任何仍然存在的非替换代码,这些代码依赖于现在不再存在的导入。

【问题讨论】:

    标签: java regex eclipse replace


    【解决方案1】:

    Eclipse 应该有一个简单的文件搜索选项,底部有一个“替换..”按钮。您可以像通常指定要搜索的文件结尾一样进行搜索(在这种情况下,您可能需要 *.java)。替换按钮可让您使用正则表达式替换每个搜索结果。

    诚然,这会一次更换一个替换源,我知道这很尴尬,但我的建议是执行小步骤,最大限度地减少代码被破坏的时间。例如,如果您将类移动到具有新名称的新位置,只需首先关注重命名类(验证代码之后是否可以工作),然后然后专注于更改其包。

    言归正传,先点击预览!

    或者,考虑使用 ctrl+shift+R 重命名方法/变量/类。假设代码在源文件夹下,它会自动重命名任何使用它的地方。通常最好使用正则表达式。但同样,您不能同时执行多项更改。虽然这可能是最好的。只需备份项目并在开始之前组织需要进行的更改。

    祝你好运!

    【讨论】:

    • 很遗憾我不能使用重命名。我正在用已经存在的框架替换旧框架,我不只是重构和改进旧框架。不过,我很欣赏您关于“文件”搜索的提示:)
    猜你喜欢
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 2020-01-16
    • 2016-12-18
    • 2015-02-21
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    相关资源
    最近更新 更多