eclipse - 在变量名中查找并替换下划线字符

时间:2011-10-20 15:15:27

标签: java regex eclipse

我想要重构变量名称。

variable_foo

variableFoo

是否可以使用eclipse的find / replace工具执行此操作?

修改

我的问题不仅是替换'_',而是将下一个字母编辑为大写。

可能使用正则表达式

6 个答案:

答案 0 :(得分:3)

这些链接

  

http://www.php.net/manual/en/function.preg-replace.php#89364

     

http://www.blog.highub.com/regular-expression/perl-regex/perl-regex-capitalize-the-first-letter-of-a-word/

似乎表明Perl和/或PHP Regex语法支持一个\ u运算符,它取代了替换表达式中跟随它的匹配 - 我认为我将其解释为来自'vi'的保留(UNIX文本编辑器) - 没有任何线索,为什么它似乎不存在于更现代和流行的正则表达式实现中

因此,如果您可以将代码放到支持适当版本的vi的系统(或完全支持此perl语法的编辑器)上,然后弄清楚如何在其中打开文档,那么如何运行查找-replace等等。然后你必须使用如下表达式:

/\b(\w+?)_(\w+)/$1\u$2/

find:     \b(\w+?)_(\w+)
replace:  $1\u$2

答案 1 :(得分:3)

Eclipse Marketplace中有一个名为 AnyEditTools 的插件,它添加了一堆转换选项,其中一个来自/ camelCaseunderscore_names({{1} })。

然而,Eclipse的Java编辑器目前(Indigo)在Alt+Ctrl+K中缺少正确的导航 - 它只适用于identifiers_with_underscores。 (详情请见https://bugs.eclipse.org/bugs/show_bug.cgi?id=67381

答案 2 :(得分:1)

查找和替换的问题在于它不是AST感知的,所以即使你可以使用引用并将其取消,它也会在整个文件中执行,而不仅仅是变量。

IMO你最好找到变量并使用“重命名变量”重构重命名它们,这也将正确处理getter / setter重命名(如果适用)等等,而不是依赖于(相对无知的)搜索-and-替换。

答案 3 :(得分:1)

是的,你可以这样做:

find : (.*)_(.)(.*)
replace : $1\C$2$3 

这应该可以解决问题

答案 4 :(得分:1)

如果我理解正确,你想找到任何vunderscore后跟一个小写字符,并用该字符的大写版本替换它,即var _f oo - > var F oo,_bar _b az - > _bar B az等

不幸的是,似乎Eclipse不能提供这一点,因为正如其他人已经说过的那样,你可以使用Ctrl + H(或单个文件中的Ctrl + F)和正则表达式来查找那些下划线+字符,但是正则表达式不提供转换匹配的工具(例如小写到大写)。

您可以做的最好的事情是使用正则表达式找到这些变量,然后按照您想要的方式重构它们,例如使用如下表达式搜索:\w_\w应该找到var_foo,bar1_baz但不能找到_bar,标记它们并重命名(Alt + LShift + R)。

请注意以下内容:\w_\w也可以找到方法,注释等,因为搜索不知道它实际找到了什么(无论是变量,类名,方法等)。

答案 5 :(得分:0)

也许不是您正在寻找的答案,但对于所有这些类型的查找/替换任务,我使用Notepad ++。我在Eclipse中编写代码,并在Notepad ++中对我的源代码进行批量查找/替换。