下面是一个完整的 Java 示例代码,实现该功能:


✅ Java 代码实现

public class TextToParagraph {

    public static void main(String[] args) {
        // 示例文本
        String text = "这是一个句子。这是第二个句子!这是第三个句子。最后一个感叹句!";

        // 处理文本并添加 p 标签
        String result = addParagraphTags(text);

        // 输出结果
        System.out.println(result);
    }

    /**
     * 将文本按句号和感叹号分割,每段添加 <p> 标签
     * @param text 输入文本
     * @return 添加 p 标签后的 HTML 段落字符串
     */
    public static String addParagraphTags(String text) {
        if (text == null || text.trim().isEmpty()) {
            return "";
        }

        // 使用正则表达式按“。”和“!”分割,同时保留分隔符
        // 零宽度断言:在句号或感叹号后拆分,但保留它们
        String[] parts = text.split("(?<=[。!])");

        StringBuilder result = new StringBuilder();

        for (String part : parts) {
            part = part.trim(); // 去除首尾空格
            if (!part.isEmpty()) {
                // 去掉末尾可能多余的标点(如果已经包含)
                result.append("<p>").append(part).append("</p>\n");
            }
        }

        return result.toString().trim();
    }
}

🔍 输出结果

对于输入:

这是一个句子。这是第二个句子!这是第三个句子。最后一个感叹句!

输出为:

<p>这是一个句子。</p>
<p>这是第二个句子!</p>
<p>这是第三个句子。</p>
<p>最后一个感叹句!</p>

📌 技术说明

  • (?<=[。!]):这是一个 正向后行断言(positive lookbehind),表示在“。”或“!”之后拆分,但保留该符号在原字符串中。
  • trim():去除每段前后空格。
  • 使用 StringBuilder 提高字符串拼接效率。

✅ 扩展建议(可选增强)

  1. 支持问号(?)也作为分隔符

    String[] parts = text.split("(?<=[。!?])");
    
  2. 去除空段落或过滤空白
    已通过 isEmpty() 判断处理。

  3. 输出为 HTML 文件

    try (FileWriter fw = new FileWriter("output.html")) {
        fw.write("<html><body>\n" + result + "\n</body></html>");
    } catch (IOException e) {
        e.printStackTrace();
    }
    

更多推荐