java中输出怎么自动换行_关于java:是否可以使用字符串格式化程序自动换行?...

我想格式化一个String,准备输出到终端窗口。 终端窗口本身不会自动换行,所以我想在换行符中插入换行符。

有没有办法使用String.format()方法实现这一目的?

编辑:只是为了澄清。 我不想将换行符硬编码到String中。

我想从像这样的输入:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

对于这样的输出:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor

incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud

exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure

dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt

mollit anim id est laborum.

(强调可读性)

无法使用String.format插入换行符,但您可以使用正则表达式来执行此操作。例如,这将通过空格将字符串拆分为最多50个字符的行:

str +="

"; // Needed to handle last line correctly

str = str.replaceAll("(.{1,50})\\s+","$1

");

但它并不完美;例如,比最大值更长的"单词"不会被分割。

公认。 我最终使用了WordUtils.wrap()方法,但这最接近我在问题中提出的要求。

java.text.BreakIterator类会产生更好的结果 - 例如它知道在连字符后断开是可以的 - 但是使用它需要在循环中迭代字符串docs.oracle.com/javase/tutorial/i18n/text/line.html

我建议您使用现有的库,例如Apache Commons Lang WordUtils.wrap(),而不是使用String.format()自己编写内容。

我想我有一个解决方案:你可以使用正则表达式拆分你的行来返回一个固定长度的字符串数组。这是表达式:

final String[] fixedLengthLines = line.split("(?<=\\G.{" + lineLength +"})");

然后你只需输出你需要时附加的字符串数组。

仅当您的输出终端显示固定大小的字符时,这将起作用:)

注意:它来自这里:在Java中将字符串拆分为相等长度的子字符串

这有分裂整个词的缺点。

是的,确定它的工作原理如下:/

这是一个很好的解决方案。 如果我被限制为本机方法,我可能会使用它,但WordUtils类太方便了:)

如果我正确理解了这个问题,您需要在格式模式中使用%n平台特定的行分隔符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值