我正在构建验证内容,验证内容,然后以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);
它给出的输出为: paramX不能小于10 paramY不能小于20
但我想要输出,每个附加的字符串将打印在新行上。如下所示。
paramX cannot be less than 10
paramY cannot be less than 20
我使用了以下解决方法,但最后一次又一次地重复相同的代码(我不想这样做)。
sb.append(System.getProperty("line.separator")); // Add Explicit line separator each time
sb.append("\n");
sb.append("paramX cannot be less than 10 \n");
有更简单的方法吗?
答案 0 :(得分:7)
如果您不想一遍又一遍地执行此操作,请编写辅助方法:
public void appendString(StringBuilder builder, String value) {
builder.append(value + System.lineSeparator());
}
然后致电:
if(paramX<10){
appendString(sb, "paramX cannot be less than 10 ");
}
这样,如果您需要更改错误的输出格式,您只需要维护一个位置。
答案 1 :(得分:4)
简单的方法是保留错误列表,而不是随意连接它们。这将有助于保持逻辑错误与其呈现之间的关注点分离。
了解Spring验证的工作原理:您有一个Errors对象,用于保存错误列表,以及一个单独的消息源对象,用于填充用户可见消息中的不同错误。
答案 2 :(得分:4)
另一个选择是使用Apache Commons StrBuilder,它具有您正在寻找的功能。
答案 3 :(得分:2)
您可以尝试使用PrintStream,因为它具有自动添加新行的println(String string)方法。
像这样的东西。
ByteArrayOutputStream bos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(bos);
ps.println("Line 1");
ps.println("Line 2");
ps.flush();
String message = new String(bos.toByteArray());
System.out.println(message);
答案 4 :(得分:2)
只需考虑共享用于实现相同结果的jdk 8的新功能。 使用StringJoiner,我们可以构造由定界符分隔的字符序列。
$($(this).parents()[3]).find('.card-body').toggleClass('row-200')
答案 5 :(得分:1)
首先,您需要在每个\n
的末尾包含换行符(.append()
):
sb.append("paramX cannot be less than 10 \n");
至于重复换行逻辑,只需将其包装在一个方法中:
public void append(StringBuilder sb, Object value) {
sb.append(value).append(System.getProperty("line.separator")).append('\n');
}
并使用它:
if(paramX < 10){
append(sb, "paramX cannot be less than 10");
}
答案 6 :(得分:-1)
直接追加......
if(paramX<10){
sb.append("paramX cannot be less than 10 \n ");
}
if(paramY<20){
sb.append("paramY cannot be less than 20 \n ");
}
答案 7 :(得分:-1)
只需使用\n
- 它随处可用。此外,如果有两个消息,您似乎想有条件地添加换行符:
StringBuilder sb = new StringBuilder();
if (paramX<10) {
sb.append("paramX cannot be less than 10 ");
}
if (paramY<20) {
if (!sb.length() > 0) // only add newline if needed
sb.append('\n');
sb.append("paramY cannot be less than 20 ");
}