用于将文本行换行到最大行宽的 Java 代码

2022-09-01 08:55:11

在我重新发明轮子(糟糕)之前,我想知道是否有一些现有的Java代码可以将文本行换行到给定的最大宽度。理想情况下,它将:

  • 尊重现有换行符
  • 分割超过字边界最大长度的行
  • 通过插入连字符来分解长度超过最大行宽的单词

编辑:这里没有“像素”,只有java.lang.String。“最大宽度”是指一行上的字符数。


答案 2

使用自动换行库(在 Maven Central 上可用)。

以下是使用它的一种方法:

String text = "hi there how are you going?";
String wrapped = 
  WordWrap.from(text)
    .maxWidth(10)
    .insertHyphens(true) // true is the default
    .wrap();

输出为:

hi there
how are
you going?

该图书馆保留了线路上的主要空间,这是对Apache commons-lang产品行为的一个抱怨。您还可以指定函数,以便在呈现文本时获得像素精确的结果。stringWidth

该库具有不错的单元测试覆盖率(当您考虑从Web复制和粘贴代码块时要记住这一点!

Maven 依赖关系是:

<dependency>
  <groupId>com.github.davidmoten</groupId>
  <artifactId>word-wrap</artifactId>
  <version>0.1.9</version>
</dependency>

请务必检查是否有更高版本。