优雅地删除“\n” StringBuilder 中最后一个字符串后面的分隔符

发布于 2024-09-27 17:23:32 字数 258 浏览 5 评论 0原文

有以下Java代码,用“\n”创建StringBuilder,即回车分隔符:

while (scanner.hasNextLine()){
    sb.append(scanner.nextLine()).append("\n");
}

发生过,在最后一个字符串(行)之后有“\n”符号。

如何从生成的 StringBuilder 对象中优雅地删除最后一个“\n”?

谢谢。

Have following Java code,that creates StringBuilder with "\n",i.e. carriage return delimiters:

while (scanner.hasNextLine()){
    sb.append(scanner.nextLine()).append("\n");
}

It's occurred,that after last String(line) had "\n" symbol.

How to gracefully remove last "\n" from resulting StringBuilder object?

thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

蓝色星空 2024-10-04 17:23:32

这一直对我有用。

sb.setLength(sb.length() - 1);

操作非常轻量级,保存当前内容大小的内部值只会减少 1。

此外,如果您认为缓冲区可能为空,请在执行此操作之前检查长度值。

This has always worked for me

sb.setLength(sb.length() - 1);

Operation is pretty lightweight, internal value holding current content size will just be decreased by 1.

Also, check length value before doing it if you think buffer may be empty.

深居我梦 2024-10-04 17:23:32

如果您使用的行数足够少,则可以将所有行放入 List 中,然后使用 StringUtils.join(myList, "\n" );

另一种选择是 trim() 结果字符串。

发现 guava 的简洁 Joiner 类:

Joiner.on('\n').join(myList)

If you're working with a small enough number of lines, you can put all the lines in a List<String> and then use StringUtils.join(myList, "\n");

Another option is to trim() the resulting string.

Update after discovering guava's neat Joiner class:

Joiner.on('\n').join(myList)

人生百味 2024-10-04 17:23:32

您可以构建结果而无需换行符来摆脱:

String separator = "";
while (scanner.hasNextLine()){
    sb.append(separator).append(scanner.nextLine());
    separator = "\n";
}

You could build the result without a newline to get rid of:

String separator = "";
while (scanner.hasNextLine()){
    sb.append(separator).append(scanner.nextLine());
    separator = "\n";
}
夕色琉璃 2024-10-04 17:23:32

sb.deleteCharAt(sb.length()-1);

sb.deleteCharAt(sb.length()-1);

倾听心声的旋律 2024-10-04 17:23:32

您不必删除它,而可以永远不添加它。

while (scanner.hasNextLine()) {
    if (sb.length()>0) sb.append("\n");
    sb.append(scanner.nextLine());
}

Instead of having to remove it you could simply never add it.

while (scanner.hasNextLine()) {
    if (sb.length()>0) sb.append("\n");
    sb.append(scanner.nextLine());
}
于我来说 2024-10-04 17:23:32
bool isFirst = true;
while (scanner.hasNextLine()){
  if(!isFirst)
    sb.append("\n"));
  else
    isFirst = false;

  sb.append(scanner.nextLine());

}
bool isFirst = true;
while (scanner.hasNextLine()){
  if(!isFirst)
    sb.append("\n"));
  else
    isFirst = false;

  sb.append(scanner.nextLine());

}
阪姬 2024-10-04 17:23:32
if (scanner.hasNextLine()) 
  sb.append(scanner.nextLine());
while (scanner.hasNextLine()){
  sb.append("\n").append(scanner.nextLine());
}
if (scanner.hasNextLine()) 
  sb.append(scanner.nextLine());
while (scanner.hasNextLine()){
  sb.append("\n").append(scanner.nextLine());
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文