Dar*_*ght 4 java stringbuilder
我正在构建一个验证内容,验证内容,然后以StringBuilder的形式发出警告(对于失败).在下面的代码中说我正在检查值paramX和paramY的下限.
StringBuilder sb= new StringBuilder();
if(paramX<10){
sb.append("paramX cannot be less than 10 ");
}
if(paramY<20){
sb.append("paramY cannot be less than 20 ");
}
System.out.println(sb);
Run Code Online (Sandbox Code Playgroud)
它给出的输出为:paramX不能小于10,参数不能小于20
但我想要输出,每个附加的字符串将打印在新行上.如下.
paramX cannot be less than 10
paramY cannot be less than 20
Run Code Online (Sandbox Code Playgroud)
我使用了以下解决方法,但最终一次又一次地重复相同的代码(我不想这样做).
sb.append(System.getProperty("line.separator")); // Add Explicit line separator each time
sb.append("\n");
sb.append("paramX cannot be less than 10 \n");
Run Code Online (Sandbox Code Playgroud)
有更简单的方法吗?
如果你不想一遍又一遍地做,那就写一个帮助方法:
public void appendString(StringBuilder builder, String value) {
builder.append(value + System.lineSeparator());
}
Run Code Online (Sandbox Code Playgroud)
然后打电话:
if(paramX<10){
appendString(sb, "paramX cannot be less than 10 ");
}
Run Code Online (Sandbox Code Playgroud)
这样,如果需要更改错误的输出格式,则只需要维护一个位置.
只是想分享我用来实现相同结果的 jdk 8 的新功能。使用 StringJoiner 我们可以构造一个由分隔符分隔的字符序列。
StringJoiner formattedString= new StringJoiner("\n");
formattedString.add("XXX");
formattedString.add("YYY");
System.out.println(formattedString);
Run Code Online (Sandbox Code Playgroud)