有以下 Java 代码,它使用 "\n"(即回车符)作为定界符创建了一个 StringBuilder
:
while (scanner.hasNextLine()){
sb.append(scanner.nextLine()).append("\n");
}
遇到了一个问题,最后一行字符串(line)有 "\n" 符号。
如何优雅地从结果中删除最后的 "\n" 字符?
谢谢。
有以下 Java 代码,它使用 "\n"(即回车符)作为定界符创建了一个 StringBuilder
:
while (scanner.hasNextLine()){
sb.append(scanner.nextLine()).append("\n");
}
遇到了一个问题,最后一行字符串(line)有 "\n" 符号。
如何优雅地从结果中删除最后的 "\n" 字符?
谢谢。
这对我一直有效
sb.setLength(sb.length() - 1);
这个操作非常轻量级,内部的值只会减少1,表示当前内容的大小。
如果你认为缓冲区可能为空,请在执行此操作之前检查长度值。
List<String>
中,然后使用StringUtils.join(myList, "\n");
来连接它们。trim()
操作。Joiner
类之后更新:
Joiner.on('\n').join(myList)
List<String>
。 - andersoj您可以在不换行的情况下构建结果来消除:
String separator = "";
while (scanner.hasNextLine()){
sb.append(separator).append(scanner.nextLine());
separator = "\n";
}
你可以选择从未添加它,而不是必须将其移除。
while (scanner.hasNextLine()) {
if (sb.length()>0) sb.append("\n");
sb.append(scanner.nextLine());
}
sb.deleteCharAt(sb.length()-1);
bool isFirst = true;
while (scanner.hasNextLine()){
if(!isFirst)
sb.append("\n"));
else
isFirst = false;
sb.append(scanner.nextLine());
}
else isFirst = false;
的方法:if (!isFirst | (isFirst = false))
- aioobeif (scanner.hasNextLine())
sb.append(scanner.nextLine());
while (scanner.hasNextLine()){
sb.append("\n").append(scanner.nextLine());
}
trim()
解决方案不够优雅,而我的解决方案存在代码重复的问题。也许join()
是最好的选择... - andersoj