我有以下方法
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();
}
它返回的输出稍微关闭,这是一个显示所需输出的图像。
有人可以告诉我需要改变什么才能让它发挥作用吗?
答案 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();
}