我的班上有这样的代码:
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 ....
)空间的情况。谢谢!
答案 0 :(得分:1)
答案 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中测试。