如何用 StringUtils.equals 替换所有 String.equals

How to replace all String.equals by StringUtils.equals

我想自动替换所有出现的

if(variable!=null && variable.equals(value)) ...

来自

if(StringUtils.equals(variable, value)) ...

以类型感知的方式。这意味着,variablevalue 应该 肯定 String(不仅仅是字典序处理,例如 awk/perl) .

此外,它应该足够灵活,可以将 value 作为文字和常量 (final static) 或其他变量或参数来申请——任何肯定是 [=16 的东西=] 在这种情况下。另外,后面可能还有更多的布尔表达式。

我怀疑 Java Std API 可能在这里有所帮助,但代码转换本身不是由 API 处理的,只是对代码的访问。

IntelliJ IDEA 的结构搜索和替换功能能够进行此类转换。有关详细信息,请参阅 Web help

我用过 JAPA 称为 Java 解析器。这是我用过的最好的代码更改工具。从读取 if 循环中的一行到将其保存回同一个源,它拥有一切。值得尝试。

如果您使用的是 netbeans,则可以使用自定义重构:

菜单 Refactor/Inspect 和 Transform/Browse/New/Edit 脚本:

<!description="Convert to StringUtils.equals">

$var!=null && $var.equals($val) :: $var instanceof java.lang.String
=> StringUtils.equals($var, $val)
;;