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

Posted

技术标签:

【中文标题】eclipse - 查找并替换变量名称中的下划线字符【英文标题】:eclipse - find and replace underscore character in variables names 【发布时间】:2011-12-11 21:27:36 【问题描述】:

我想要重构变量名称。

variable_foo

变量Foo

是否可以使用eclipse的查找/替换工具来做到这一点?

编辑:

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

可以用正则表达式吗??

【问题讨论】:

foo 更改为Foo 确实是唯一的问题 - 在我看来,某个地方的一些不起眼的工具支持修改替换表达式中的匹配,但我不能记住它是什么手头...... 【参考方案1】:

在 Eclipse Marketplace 中有一个名为 AnyEditTools 的插件,它添加了一堆转换选项,其中一个是 from/to camelCaseunderscore_names (Alt+Ctrl+K)。

但是,Eclipse 的 Java 编辑器当前 (Indigo) 在 identifiers_with_underscores 中缺乏正确的导航 - 它仅适用于 CONSTANT_NAMES_CURRENTLY。 (详情请看:https://bugs.eclipse.org/bugs/show_bug.cgi?id=67381)

【讨论】:

【参考方案2】:

这些链接

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 正则表达式语法支持 \u 运算符,该运算符将替换表达式中的匹配项大写 - 我认为我将其解释为来自 'vi' 的保留(UNIX文本编辑器) - 不知道为什么它似乎不存在于更现代和流行的正则表达式实现中

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

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

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

【讨论】:

【参考方案3】:

是的,你可以这样做:

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

这应该可以解决问题

【讨论】:

好的@皮埃尔实验室。但是像 _foo_bar 这样的变量应该替换为 _fooBar。我试过 (.+)_(.)(.*) 但不起作用。而且_后面的字母不是大写的。 我的错,我认为 \C 会起作用。对于 _foo bar 的情况,这不是你的问题......无论如何,你想要做的可能需要外部脚本语言(例如 python)【参考方案4】:

如果我理解正确,您希望找到后跟小写字符的任何 vunderscore 并将其替换为该字符的大写版本,即 var_foo -> var Foo, _bar_baz -> _barBaz 等等。

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

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

请注意以下几点:\w_\w 也可以找到方法、cmets 等,因为搜索不知道它实际找到了什么(是否是变量、类名、方法等)。

【讨论】:

【参考方案5】:

查找和替换的问题在于它不支持 AST,因此即使您可以使用引用并将其大写,它也会在整个文件中执行此操作,而不仅仅是变量。

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

【讨论】:

【参考方案6】:

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

【讨论】:

以上是关于eclipse - 查找并替换变量名称中的下划线字符的主要内容,如果未能解决你的问题,请参考以下文章

替换保留字列表中的列文本

如何给文章中所有相同的字添加下划线

简单的介绍变量

你好,请问在Word文档中的所有红色字体下面加上下划线是怎么做到的?

正则表达式中的 Eclipse 更改案例查找和替换

rust替换函数名