0

我有一个包含表格的 HTML 字符串。但是在某些情况下,标签
后面会有字符。 我想从字符串中删除标签之后的所有内容。 关于我如何在 Java 中做到这一点的任何想法?</table>
</table>

4

4 回答 4

3

假设str是这个字符串,您可以执行以下操作:

str = str.replaceAll("</table>.*","</table>");
于 2012-05-04T13:30:57.413 回答
1

正如@Andrew Logvinov 所建议的那样使用正则表达式。

str.replaceAll("</table>.*","</table>");

这意味着:将文字字符串"</table>"后面跟随任何.重复零次或多次的字符*,并将其替换为文字字符串"</table>"

请注意,此方法会替换所有(因此它需要第一个匹配项并删除字符串的其余部分),因此如果您有多个表或嵌套表,这将不会有任何好处。学习使用正则表达式以获得更好的解决方案。(或者只使用 indexOf 和 String 类中的任何方法)

于 2012-05-04T13:47:57.817 回答
0
String endTableTag = "</table>";
String html = "<table><tr><td>Hello</td></tr></table>yadayadayada";
int index = html.lastIndexOf(endTableTag);
String cleanedup;
if (index>-1) {
    // Removes everything after the last table end tag
    cleanedup = html.substring(0, index + endTableTag.length());
} else {
    cleanedup = html;
}
System.out.println(cleanedup);
于 2012-05-04T13:31:05.040 回答
0
String test = "testabc</table>anothertest</table>hahhah";
test = str.substring(0, (str.lastIndexOf("</table>")+"</table>".length()));
System.out.println(str.substring(0, (str.lastIndexOf("</table>")+"</table>".length())));
System.out.println(test);

或测试它...

test.replaceAll("</table>.*","</table>"); would be better! ;) 

很好,但如果你有超过 1 个,你可能会遇到问题!;) 所以最好使用“lastIndexOf()”恕我直言!

于 2012-05-04T13:45:10.643 回答