重构 - 替换所有以“_”开头的字段名

时间:2015-01-15 13:01:06

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

我即将重构我的项目,并且我想要替换所有以" _"开头的变量名称。例如private final String _name; -> private final String name;

我的模板查找变量很简单:

$FieldName$

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

[_][a-z]+

好吧,但这只会返回一个以" _"开头的变量列表,如何删除_然后设置新变量名?

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

2 个答案:

答案 0 :(得分:2)

您可以通过IntelliJ

中的正则表达式在文本基础上执行此操作

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

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

替换为:$2

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

答案 1 :(得分:2)

以下适用于我使用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);
}