如何将String catenation替换为StringBuilder追加?

时间:2011-02-02 06:15:36

标签: java eclipse-plugin tostring stringbuilder

如何递归地将toString方法中的所有catenations替换为StringBuilder for Java? eclipse中有这样的插件吗? 例如: 替换它:

    return "AccountAddresses ["
            + ", corporateAddresses=" + CommonHelper.isNotNull(corporateAddresses)
            + ", corporateDeliveryMinimum=" + corporateDeliveryMinimum
            + ", depot=" +  CommonHelper.isNotNull(depot)
            + ", depotDeliveryMinimum=" + depotDeliveryMinimum
            + ", preSelectedId=" + preSelectedId
            + ", residentialAddresses=" +  CommonHelper.isNotNull(residentialAddresses)
            + ", residentialDeliveryMinimum=" + residentialDeliveryMinimum
            + "]";

在此:

    return new StringBuilder("AccountAddresses [")
            .append(", corporateAddresses=").append(CommonHelper.isNotNull(corporateAddresses))
            .append(", corporateDeliveryMinimum=").append(corporateDeliveryMinimum)
            .append(", depot=").append(CommonHelper.isNotNull(depot))
            .append(", depotDeliveryMinimum=").append(depotDeliveryMinimum)
            .append(", preSelectedId=").append(preSelectedId)
            .append(", residentialAddresses=").append(CommonHelper.isNotNull(residentialAddresses))
            .append(", residentialDeliveryMinimum=").append(residentialDeliveryMinimum)
            .append("]").toString();

5 个答案:

答案 0 :(得分:14)

它是Eclipse的内置命令。

  • 单击字符串连接中的一个引号(“)。
  • 带上Quick Fix菜单(在键盘上点击Ctrl + 1)。
  • 选择Use 'StringBuilder' for String concatenation

魔术!您的

    return "foo" + "bar";

更改为

    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append("foo");
    stringBuilder.append("bar");
    return stringBuilder.toString();

答案 1 :(得分:2)

我还没有听说过这个Eclipse插件 - 所以可以随意忽略这个非主题的答案 - 但是IntelliJ有一个“意图”可以为你做到这一点(至少10.0它确实如此)。如果您想试一试,可以使用community edition

答案 2 :(得分:1)

进行正则表达式搜索并替换:

", ([a-zA-z0-9]+)=" \+ CommonHelper\.isNotNull\(([a-zA-z0-9]+)\)  // Find this

append(", $1=").append(CommonHelper.isNotNull($2))    // and replace with this

这不完整,但你明白了。

答案 3 :(得分:0)

为什么不重写类中的toString方法,并实现stringbuilder追加。

答案 4 :(得分:0)

我不认为任何插件会为你做到这一点......无论如何这都是无用的:Java编译器会比任何人都做得更好(如果“StringBuilder”被更好的东西取代,那么Java编译器如果你没有明确地使用StringBuilder,将能够使用这个“更好的东西”。