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);
}
使用 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);
}