在StringJoiner的底部添加新行

时间:2017-05-12 00:33:19

标签: java

我有以下方法

public String toIndentedString() {
    StringJoiner sj = new StringJoiner("\n");
    sj.add(rootValue.toString());
    for (Tree<T> child : children) {
        String childString = child.toIndentedString();
        sj.add(childString.replaceAll("(?m)^", "  "));
    }
    return sj.toString();
}

它返回的输出稍微关闭,这是一个显示所需输出的图像。

有人可以告诉我需要改变什么才能让它发挥作用吗?

2 个答案:

答案 0 :(得分:3)

StringJoiner的想法是你可以使用构造函数来指定参数

  

分隔符 - 每个元素之间使用的字符序列

     

添加到StringJoiner前缀 - 要为

的字符序列      

在开头后缀中使用 - 要使用的字符序列   最后

所以你可以做到

StringJoiner sj = new StringJoiner("\n", "", "\n");

答案 1 :(得分:-1)

这是解决方案,我需要将StringJoiner放入另一个方法中。然后调用该方法并添加一个新行&#34; \ n&#34;。代码也已更改为使用StringBuilder,因为它更简单。特别感谢4castle对我的帮助!

public String toIndentedString() {
    return _toIndentedString() + '\n';
}

private String _toIndentedString() {
    StringBuilder sb = new StringBuilder(rootValue.toString());
    for (Tree<T> child : children) {
        sb.append('\n');
        sb.append(child._toIndentedString().replaceAll("(?m)^", "  "));
    }
    return sb.toString();
}