Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java eclipse-在变量名称中查找并替换下划线字符_Java_Regex_Eclipse - Fatal编程技术网

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

Java eclipse-在变量名称中查找并替换下划线字符,java,regex,eclipse,Java,Regex,Eclipse,我想要重构变量名 变量_foo 到 可变食物 使用eclipse的查找/替换工具可以做到这一点吗 编辑: 我的问题不仅仅是替换“u”,而是编辑下一个大写字母 使用正则表达式是可能的???可能不是您想要的答案,但是对于所有这些类型的查找/替换任务,我都使用Notepad++。我在Eclipse中编写代码,并在Notepad++中对我的源代码进行大规模查找/替换。查找和替换的问题在于它不支持AST,因此即使您可以使用引用并对其进行升级,它也会在整个文件中进行查找/替换,而不仅仅是针对变量 在我看来,

我想要重构变量名

变量_foo

可变食物

使用eclipse的查找/替换工具可以做到这一点吗

编辑:

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


使用正则表达式是可能的???

可能不是您想要的答案,但是对于所有这些类型的查找/替换任务,我都使用Notepad++。我在Eclipse中编写代码,并在Notepad++中对我的源代码进行大规模查找/替换。

查找和替换的问题在于它不支持AST,因此即使您可以使用引用并对其进行升级,它也会在整个文件中进行查找/替换,而不仅仅是针对变量


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

是的,您可以这样做:

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

如果我没弄错的话,你想找到任何vunderscore后面跟一个小写的字符,然后用大写的字符替换它,比如var_foo->varFoo,_bar_baz->u barBaz等等

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

最好的方法是使用正则表达式查找这些变量,然后按照您想要的方式重构它们,例如,使用以下表达式进行搜索:
\w\uw
应该查找var\u foo、bar1\u baz而不是bar,标记它们并重命名(Alt+LShift+R)

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

这些链接

似乎表明Perl和/或PHP正则表达式语法支持在替换表达式中使用大写匹配符的\u运算符-我认为我将其解释为来自“”(UNIX文本编辑器)的保留-不知道为什么在更现代和流行的正则表达式实现中不存在它

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

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


Eclipse Marketplace中有一个名为AnyEditTools的插件,它添加了一系列转换选项,其中一个是from/to
camelCase
underline\u names
Alt+Ctrl+K


然而,Eclipse的Java编辑器当前(Indigo)在带有下划线的
标识符中缺乏正确的导航-它目前只适用于
常量名称。(此处详细信息:)

foo
更改为
foo
确实是唯一的问题-在我看来,某个地方的某个模糊工具支持修改替换表达式中的匹配项,但我记不起它是什么…ok@Pierre Lab。但是像_foo_bar这样的变量应该替换为_fooBar。我试过了(++)(*),但没用。_u后面的字母不是大写的。我的错是,我以为\C会起作用。对于富吧案,这不在你的问题中。。。在任何情况下,您想要做的事情都可能需要外部脚本语言(例如python)
find:     \b(\w+?)_(\w+)
replace:  $1\u$2