【发布时间】:2021-04-19 23:05:36
【问题描述】:
我有一个带有自定义 php 配置方案的 html,我正在尝试将 html 变量替换为位于 .dat 文件中的相应值。我已经设法将所有 .dat 键值内容存储在哈希图中,但是我似乎无法在不替换一些 html 的情况下替换标签,因为中间有空格而替换标签,或者根本没有替换任何内容。我想要的只是用它们对应的值替换所有键并删除所有未使用的标签。有人可以帮我解决这个问题吗?他们是在 Android 中更简单的方法吗?
这是我的java代码
String replaceDatTags(String html){
Log.i(TAG, "In replaceDatTags");
ArrayList<String> tags = new A
rrayList<>(),
values = new ArrayList<>();
BufferedReader reader = null;
try {
reader = new BufferedReader(
new InputStreamReader(mContext.getAssets().open("fullReceipt.dat"), "UTF-8"));
String line = reader.readLine(); // first tag is the [Values] this one is skiped
while ((line = reader.readLine()) != null) {
tags.add(line.substring(0, line.indexOf("=")));
values.add(line.substring(line.indexOf("=")+1, line.length())); // get .dat variable value
}
} catch (Exception e) {
e.getMessage();
} finally {
try {
if (reader != null)
reader.close();
} catch (Exception e2) {
e2.getMessage();
}
}
html = html.replaceAll("\n", "");
html = html.replaceAll("\t", "");
html = html.replaceAll("<\\?var ", "");
html = html.replaceAll("\\?>", "");
html = html.replaceAll("<\\?ifnexist", "");
html = html.replaceAll("<!--" , "");
html = html.replaceAll("-->", "");
html = html.replaceAll("<\\?ifneq" , "");
//html = html.replaceAll(" ", "");
for(int i = 0; i < tags.size(); i++){
if(values.get(i).equals("false")){
html = html.replace(tags.get(i), "");
}
else
html = html.replace(tags.get(i), values.get(i));
}
for(int i = 0; i < tags.size(); i++){
html = html.replace(tags.get(i), ""); // delete remaining tags that are floating around
}
html = html.replaceAll("true", "");
html = html.replaceAll("false", "");
return html;
HTML 示例
<body style="width: 100%; margin-right: 2px; margin-left: 2px;">
<div id="header" style="visibility: visible; text-align:center;font-size:16px; font-weight:bold; ">
<table border="0" style="width: 100%;">
<tr>
<td width="25%"></td>
<td width="25%"></td>
<td width="25%"></td>
</tr>
<tr>
<td colspan="3" align="center">
<img src="<?var header_logo ?>" width="50%" />
</td>
</tr>
<tr>
....
<?ifnexist header_user <!-- ?>
<tr>
<td colspan="3" align="left" style="font-weight: bold;white-space: nowrap">
<br>
<i>
<p> USER:
<?var header_user?>
</p>
</i>
</td>
</tr>
<?ifnexist header_user --> ?>
...
<td align="right" width="45%">
<?ifneq header_show_inv_num true <!-- ?>
TRACE:
<?var header_trace_nbr?>
<?ifneq header_show_inv_num true --> ?>
</td>
.dat 文件示例
[value]
header_logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAKKADAAQAAAABAAAAKAAAAABZLkSWAAADcElEQVRYCe2XL5iNQRTGd61HoSgUxZYVKBT9qsi2oihUBMkKBJspCplCoKxCEZDJCJKkeH/3uWf2zNwz39zvfveusud53mf+nTnzzpkzZ75vZWVfhnlgdcD0w5p7XjgtrE+gIsk31X4KX4SPwg+ht8xDcKRVLgmQ6iMQfiW86zOpD8EzMnxFoBwieHJbwLNNmZXgNVm63LTWT+Gt1CHaKS2CxNmW0Pc4Oxd1gxz7HeGP68uqa1krbyybHKsdFc4K74W/wpR0EXwk7UV57oVsPRVOCZDyYiTf+E6r1whelwIpZFHyVYZ2JoBQuXH6jgifhEwigtzSG5nW8AYEubUc4weB/Mg6hwSTDVXQYyxJdEk4iuNJI69gnFw2U4rIp0618OIt4aQbIQWRMZKUHhxp5EIazSuP1XwmZDvMVXq1fksbD3JJTDhm7H+3joNWmZS8EJEQ5P4F4HnrI7+kXD51JP3NwAhOSmt5ghxrGbzMZ0fPqUjmTT1s0GywDrkvWkvd49hEZ7yhA/RMpHZriTsTYqZm2HS6StYgVFo20gl5gj5Y/SI+y9c24fWjOrYJ/rsCcdaS9N77Iz7WmjVgPNoYoVNbM/V7DybWA4jMOpUYvCqQsiJJXDzBSHFZfZZHfXyHa/0vgiGZqLMPQVLMnou/JLg9nb1jclF1clIU6E5toVULgRVPsPaEkRbIf14s9SzLq4mLP+L0/nkmQZ3ddd3AYErWlRZX73o2sttIHvQEmzdK83myOj/Rd9eo1uzJQyG9GIU2n11j8UdMnOHF6EXhSO8LaWeqo+/bajaFvGeOwHtRXGNz/A5jzROk/VIo4w3StwWLO1XHwhdH+uqY9M1aELs3K8qZTX/E6DPoY4S+z0JJjv55hUyxJUTxx9oZwdVgFTPghzgWvkI8UfRqMeTn+jpHGhEzHeI7C5uIIMr8NJUfr8QFO+dfFtkU+OhclBCfT0pj5RHbODetTDt8RG4LJXGbM6TEa1PkMLhWscrf145wTuCX0At9HNMJAdJDBUfcE1hzSmpHbIrctgdClHpMZ0iJ50hfPrYzezUPmhK7ei3w3G1Y54JKYu6hEHrO1mh50PQoubXkyPS1S+ccQiohI+C9pvQhaMZGqgAI9xEIkeOyPNcyMA9Bs8kFIQ9CFK+WhCGEtyh5W9Pzpfq+7JkH/gHV/os9p6RNLQAAAABJRU5ErkJggg==
header_date=10/08/2016
header_time=14:23
【问题讨论】: