Java 替换 HTML 中的字段

Java to replace fields in HTML

使用 java 我想替换

中的每个 {}
<td width="66"><p>{}</p></td><td width="96">
          <p><u><a href="{}">{}</a></u></p></td><td width="111"><p>{}</p></td>
<td width="283"><p>{}</p></td><td width="215"><p>{}</p></td>
<td width="137"><p>{}</p></td><td width="92"><p>{}</p></td>
<td width="99"><p><em>{}</em></p></td><td width="109"><p>{}</p></td>
<td width="109"><p>{}</p></td> 

mty 中的值 java 应用程序。我尝试使用 jsoup (https://jsoup.org/) 和 ThymeLeaf,但都没有成功?然后在替换后我想通过电子邮件发送 html。任何帮助将不胜感激。谢谢

您可以将要替换的值存储在任何集合中,然后执行以下操作:

static final Pattern PLACE_HOLDER = Pattern.compile("\{\}");

public static void main(String[] args) {
    String input = "<td width=\"66\"><p>{}</p></td><td width=\"96\">\n"
        + "<p><u><a href=\"{}\">{}</a></u></p></td><td width=\"111\"><p>{}</p></td>\n"
        + "<td width=\"283\"><p>{}</p></td><td width=\"215\"><p>{}</p></td>\n"
        + "<td width=\"137\"><p>{}</p></td><td width=\"92\"><p>{}</p></td>\n"
        + "<td width=\"99\"><p><em>{}</em></p></td><td width=\"109\"><p>{}</p></td>\n"
        + "<td width=\"109\"><p>{}</p></td>";

    List<String> replacements = List.of("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K");
    Iterator<String> iterator = replacements.iterator();
    String output = PLACE_HOLDER.matcher(input).replaceAll(matcher -> iterator.next());

    System.out.println(output);
}

输出:

<td width="66"><p>A</p></td><td width="96">
<p><u><a href="B">C</a></u></p></td><td width="111"><p>D</p></td>
<td width="283"><p>E</p></td><td width="215"><p>F</p></td>
<td width="137"><p>G</p></td><td width="92"><p>H</p></td>
<td width="99"><p><em>I</em></p></td><td width="109"><p>J</p></td>
<td width="109"><p>K</p></td>

您可以通过以下方式使用 Jsoup 执行此操作

    public static void replaceHtml() {
        String HEADER = "<html><head></head><body><table><tbody><tr>";
        String TAILER = "</tr></tbody></table></body></html>";
        String data = HEADER + "<td width=\"66\"><p>{}</p></td><td width=\"96\">\n" +
            "          <p><u><a href=\"{}\">{}</a></u></p></td><td width=\"111\"><p>{}</p></td>\n" +
            "<td width=\"283\"><p>{}</p></td><td width=\"215\"><p>{}</p></td>\n" +
            "<td width=\"137\"><p>{}</p></td><td width=\"92\"><p>{}</p></td>\n" +
            "<td width=\"99\"><p><em>{}</em></p></td><td width=\"109\"><p>{}</p></td>\n" +
            "<td width=\"109\"><p>{}</p></td>" + TAILER;
        Document doc = Jsoup.parse(data);
        Element table = doc.select("table").get(0); //select the first table.
        Elements rows = table.select("tr");
        Elements d = rows.select("td"); //select the first table.
        for (int i = 0; i < d.size(); i++) {
            //replace according to your need
            d.get(i).text("mytext");
        }
        doc.outputSettings().prettyPrint(false);
        String replacedData = doc.toString();
        replacedData = replacedData.replaceAll(HEADER, "");
        replacedData = replacedData.replaceAll(TAILER, "");
        System.out.println(replacedData);
    }