【问题标题】:Refactoring - Replace all Fieldnames Starting with "_"重构 - 替换所有以“_”开头的字段名
【发布时间】:2015-03-13 21:13:00
【问题描述】:

我即将重构我的项目,我想替换所有以“_”开头的变量名,例如private final String _name; -> private final String name;

我的 FIND the Variables 模板很简单:

$FieldName$

我为变量名设置了这个正则表达式:

[_][a-z]+

好吧,但这只会返回一个以“_”开头的变量列表,我该如何去掉 _ 然后设置新的变量名?

编辑:我编辑了这个主题,所以也许 Eclipse 用户可以告诉我如何使用 Eclipse 解决这个问题。

【问题讨论】:

  • 你在 IntelliJ 中尝试过结构搜索和替换吗?
  • 是的,但这不允许您重命名字段。

标签: regex eclipse intellij-idea refactoring structural-search


【解决方案1】:

使用 IntelliJ IDEA 的结构搜索和替换时,以下对我有用

使用您的搜索模板,使用以下替换模板:

$NewName$

带有脚本文本:

// FieldName refers to the Search template variable
if (FieldName instanceof com.intellij.psi.PsiVariable) {
  com.intellij.psi.PsiVariable var = (com.intellij.psi.PsiVariable) FieldName;
  var.getName().substring(1);
} else {
  String string = FieldName.getText();
  int index = string.indexOf('_');
  string.substring(0, index) + string.substring(index + 1);
}

【讨论】:

    【解决方案2】:

    您可以通过 IntelliJ 中的正则表达式在文本基础上执行此操作

    点击 ctrl-shift-r 打开“路径替换”。确保勾选Regular Expression,然后输入以下内容:

    要查找的文本:([_])([a-zA-Z]+)

    替换为:$2

    注意,这里的一个可能问题是其他文本字符串(例如EXIT_ON_CLOSE)也可能被正则表达式拾取,您可能必须小心不要在这些情况下应用替换(或调整您的常规表达更聪明)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-18
      • 2018-05-13
      • 1970-01-01
      • 2017-03-11
      • 2014-06-26
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      相关资源
      最近更新 更多