有以下Java代码,用“\ n”创建StringBuilder
,即。回车分隔符:
while (scanner.hasNextLine()){
sb.append(scanner.nextLine()).append("\n");
}
发生了,在最后一个String(行)后面有“\ n”符号。
如何从生成的StringBuilder
对象中优雅地删除最后一个“\ n”?
感谢。
答案 0 :(得分:21)
这一直对我有用
sb.setLength(sb.length() - 1);
操作非常轻量级,内部值保持当前内容大小将减少1。
另外,如果您认为缓冲区可能为空,请在执行此操作之前检查长度值。
答案 1 :(得分:9)
如果您使用足够少的行,则可以将所有行放在List<String>
中,然后使用StringUtils.join(myList, "\n");
另一个选项是trim()
生成的字符串。
Joiner
课程后更新: Joiner.on('\n').join(myList)
答案 2 :(得分:4)
你可以在没有新行的情况下构建结果来摆脱:
String separator = "";
while (scanner.hasNextLine()){
sb.append(separator).append(scanner.nextLine());
separator = "\n";
}
答案 3 :(得分:3)
而不是必须删除它,你可以简单地永远不添加它。
while (scanner.hasNextLine()) {
if (sb.length()>0) sb.append("\n");
sb.append(scanner.nextLine());
}
答案 4 :(得分:2)
bool isFirst = true;
while (scanner.hasNextLine()){
if(!isFirst)
sb.append("\n"));
else
isFirst = false;
sb.append(scanner.nextLine());
}
答案 5 :(得分:2)
sb.deleteCharAt(sb.length() - 1);
答案 6 :(得分:1)
if (scanner.hasNextLine())
sb.append(scanner.nextLine());
while (scanner.hasNextLine()){
sb.append("\n").append(scanner.nextLine());
}