Eclipse Regex搜索和替换交换位置

时间:2015-09-30 11:59:53

标签: java regex eclipse replace

我的班上有这样的代码:

if (src.getTYPERECORD().getACT().equalsIgnoreCase("B"))

现在,如果getter返回null,它可能会崩溃,而对于团队的最佳实践,我被要求将其转换为:

if ("B".equalsIgnoreCase(src.getTYPERECORD().getACT()))

我已经提出了以下正则表达式来搜索更容易的情况,我已经将值分配给变量,如act.equalsIgnoreCase(“B”):

(\w*).equalsIgnoreCase\("(\w*)"\)

替换为:

"\2".equalsIgnoreCase(\1)

除上述情况外,其中有效,并且:

tos.substring(1,1).equalsIgnoreCase("A")

请您帮忙拿出搜索并替换正则表达式来捕捉上面提到的两个例子? 它需要考虑开放IF括号相邻的情况,以及有if(src ....或if(src ....

)空间的情况。

谢谢!

3 个答案:

答案 0 :(得分:1)

这样改变应该有效:

\b([\S]*?).equalsIgnoreCase\("(\w*)"\)

查看示例here at rubular

答案 1 :(得分:0)

Java 8' Optional救援!

if (Optional.ofNullable(src).map(Source::getTYPERECORD)
    .map(TypeRecord::getACT).orElse("").equalsIgnoreCase("B"))

如果链上的任何内容为null,包括src本身,则orElse()触发并且测试将为false。否则,测试按预期工作。

答案 2 :(得分:0)

这就是工作:

Search: if\s*\(\s*(src.*)\.equalsIgnoreCase\((.*?)\)
Replace: if (\2.equalsIgnoreCase(\1)

在Eclipse中测试。