Java中实现文本自动与手动换行的方案求助
解决方案
核心思路是优先处理手动换行,再对每个手动拆分后的段落单独执行自动换行,避免自动换行破坏手动指定的分段逻辑。
实现步骤
- 用手动换行符
/将原始字符串分割为多个独立段落 - 移除每个段落前后的空白字符(比如
/后的空格) - 对每个段落单独应用word-wrap的自动换行逻辑
- 将处理后的段落用换行符拼接成最终结果
Java代码示例(以Apache Commons Text的WordUtils为例)
import org.apache.commons.text.WordUtils; public class StringLineWrapper { // 配置参数 private static final int MAX_LINE_LENGTH = 35; private static final String MANUAL_SPLIT_MARKER = "/"; public static String processLineWrap(String inputStr) { // 按手动换行符拆分段落 String[] manualParagraphs = inputStr.split(MANUAL_SPLIT_MARKER); StringBuilder finalResult = new StringBuilder(); for (String para : manualParagraphs) { // 清理段落前后的空白 String cleanedPara = para.trim(); // 对当前段落单独执行自动换行 String wrappedPara = WordUtils.wrap(cleanedPara, MAX_LINE_LENGTH); // 拼接段落,避免开头出现空行 if (finalResult.length() > 0) { finalResult.append(System.lineSeparator()); } finalResult.append(wrappedPara); } return finalResult.toString(); } public static void main(String[] args) { String testInput = "That is an example I need to fix /a example test."; String output = processLineWrap(testInput); System.out.println(output); } }
效果验证
运行上述代码后,输入字符串会输出:
That is an example I need to fix a example test.
完全符合预期。如果你使用的是其他word-wrap库,只需替换WordUtils.wrap()为对应库的自动换行方法即可,核心逻辑保持不变。
内容的提问来源于stack exchange,提问作者alexmens
相关产品推荐
相关产品推荐

