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

Java中将HTML表格字符串转换为指定格式普通文本的需求

HTML表格字符串转规范普通文本的Java实现方法

需求说明

将给定的包含HTML表格结构的Java字符串,转换为格式规整的普通文本,要求处理空行、调整大小写、补充标点并合并指定行。

实现方案(推荐使用Jsoup库)

Jsoup是Java生态中处理HTML解析的成熟库,能自动修复不规范的HTML标签,比正则表达式更可靠。

1. 添加依赖(Maven)

如果使用Maven管理项目,先在pom.xml中添加Jsoup依赖:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.17.2</version> <!-- 可替换为最新稳定版 -->
</dependency>

2. 核心代码实现

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class HtmlTableConverter {
    public static void main(String[] args) {
        String htmlStr = "<table><tr><td>ALL,</td></tr><tr><td></td></tr><tr><td> Please find attached file for this week<tr><td></td></tr><tr><td>Thanks</td></tr><tr><td>Support Team</td></tr>";
        
        // 解析HTML,自动修复不闭合标签
        Document doc = Jsoup.parse(htmlStr);
        Elements tdElements = doc.select("td");
        
        StringBuilder textBuilder = new StringBuilder();
        int validLineIndex = 0;
        
        for (Element td : tdElements) {
            String rawText = td.text().trim();
            // 跳过空内容的单元格
            if (rawText.isEmpty()) {
                continue;
            }
            
            validLineIndex++;
            switch (validLineIndex) {
                case 1:
                    // 首字母大写,其余小写(适配原文本ALL, 转为All,)
                    String formattedFirstLine = rawText.substring(0, 1).toUpperCase() 
                            + rawText.substring(1).toLowerCase();
                    textBuilder.append(formattedFirstLine).append("\n\n");
                    break;
                case 2:
                    // 补充结尾句号
                    String secondLine = rawText.endsWith(".") ? rawText : rawText + ".";
                    textBuilder.append(secondLine).append("\n\n");
                    break;
                case 3:
                    // 第三行(Thanks)后面加逗号换行
                    textBuilder.append(rawText).append(",\n");
                    break;
                case 4:
                    // 第四行(Support Team)直接追加
                    textBuilder.append(rawText);
                    break;
            }
        }
        
        // 输出最终结果
        System.out.println(textBuilder.toString());
    }
}

代码说明

  • HTML解析:Jsoup会自动修复原字符串中未闭合的<tr>标签,避免解析异常。
  • 文本过滤:修剪每个<td>的文本内容,跳过空单元格,排除无效空行。
  • 格式调整:针对不同行的需求做个性化处理,包括大小写转换、标点补充、行合并。

无第三方库的正则实现(仅适用于简单场景)

如果不想引入第三方库,可尝试正则表达式(注意:仅适配当前特定HTML结构,复杂HTML容易失效):

public class RegexConverter {
    public static void main(String[] args) {
        String htmlStr = "<table><tr><td>ALL,</td></tr><tr><td></td></tr><tr><td> Please find attached file for this week<tr><td></td></tr><tr><td>Thanks</td></tr><tr><td>Support Team</td></tr>";
        
        // 提取所有td中的文本
        String[] texts = htmlStr.replaceAll("<[^>]+>", " ").trim().split("\\s{2,}");
        
        StringBuilder textBuilder = new StringBuilder();
        // 处理第一行
        textBuilder.append(texts[0].substring(0,1).toUpperCase()).append(texts[0].substring(1).toLowerCase()).append("\n\n");
        // 处理第二行
        textBuilder.append(texts[1].trim()).append(".\n\n");
        // 处理最后两行
        textBuilder.append(texts[2]).append(",\n").append(texts[3]);
        
        System.out.println(textBuilder.toString());
    }
}

注意:正则方案仅适用于当前给定的简单HTML结构,若HTML标签嵌套复杂或格式不规范,容易出现解析错误,优先推荐Jsoup方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:05:40