我想要重构变量名称。
variable_foo
到
variableFoo
是否可以使用eclipse的find / replace工具执行此操作?
修改 的
我的问题不仅是替换'_',而是将下一个字母编辑为大写。
可能使用正则表达式
答案 0 :(得分:3)
这些链接
http://www.php.net/manual/en/function.preg-replace.php#89364
似乎表明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 的插件,它添加了一堆转换选项,其中一个来自/ camelCase
和underscore_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 ++中对我的源代码进行批量查找/替换。