使用IntelliJ Structural Search和Replace替换具有属性的getter

问题描述 投票:8回答:1

由于我正在使用的库中的更改,吸气剂被替换为直接访问该属性。例如:

public class MyLibraryClass {
  private String field;

  public String getField() { return field; }
}

已经成为

public class MyLibraryClass {
  public String field;
}

因此,我想使用IntelliJ的SSR用Bean属性替换getter调用。但是我已经陷入了如何使用正则表达式捕获组进行替换的问题。如果有另一个IntelliJ快捷方式可以做我想要的,我很乐意使用它。

以下SSR搜索参数找到了getter,但我似乎无法在替换中使用$property$的捕获组。我试过\1\$1$1看到(using backreferences in IntelliJ

我也尝试将搜索更改为$instance$.get$property$()(清除$property$的约束,但搜索没有返回任何结果。

  1. 如何访问捕获组($1
  2. 是否有可能在替换之前对$1执行任何处理(以解决此案)

我注意到接受Groovy代码的Script text选项,但是我找不到关于此功能的任何文档。

intellij-idea intellij-13 structural-search
1个回答
6
投票

放入替换模板$instance$.$field$。此模板引入了新变量field,其中应包含以下脚本文本:

String name = property.methodExpression.referenceName.substring(3)
name[0].toLowerCase() + name.substring(1) 
© www.soinside.com 2019 - 2024. All rights reserved.