You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jsoup保留textarea换行符问题求助

Jsoup解析textarea保留换行符的解决方案

Jsoup的val()方法会自动归一化空白字符,导致textarea内的换行符被合并成空格。要保留原始换行,需直接获取内部文本节点的完整内容,而非使用val()。

修改后的代码示例:

private void printTextbox(String htmlStr){
    final Document doc = Jsoup.parse(htmlStr, "UTF-8");
    Element textbox = doc.select("#textbox").first();
    if (textbox != null) {
        // 获取第一个子文本节点的原始内容(包含换行)
        TextNode textNode = (TextNode) textbox.childNode(0);
        System.out.println(textNode.wholeText());
    }
}

更稳妥的多文本节点处理:

如果textarea内存在多个文本节点(比如嵌套了其他节点的情况),可以遍历所有子节点拼接内容:

private void printTextbox(String htmlStr){
    final Document doc = Jsoup.parse(htmlStr, "UTF-8");
    Element textbox = doc.select("#textbox").first();
    if (textbox != null) {
        StringBuilder content = new StringBuilder();
        for (Node node : textbox.childNodes()) {
            if (node instanceof TextNode) {
                content.append(((TextNode) node).wholeText());
            }
        }
        System.out.println(content.toString());
    }
}

原理说明:

  • val()方法模拟表单元素的value属性行为,会将连续空白(包括换行、制表符)替换为单个空格。
  • wholeText()方法返回文本节点的原始未处理内容,完整保留所有换行、空格等格式字符。

内容的提问来源于stack exchange,提问作者nick_j_white

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:57:02