6

我有一个这样的java字符串:

String string = "I <strong>really</strong> want to get rid of the strong-tags!";

我想删除标签。我还有一些其他字符串的标签更长,所以我想找到一种方法来删除“<>”字符之间的所有内容,包括那些字符。

一种方法是使用将字符串与正则表达式进行比较的内置字符串方法,但我不知道如何编写这些方法。

4

3 回答 3

21

在使用正则表达式解析 HTML 时建议小心(由于其允许的复杂性),但是对于“简单”HTML 和简单文本(没有文字<>其中的文本),这将起作用:

String stripped = html.replaceAll("<.*?>", "");
于 2012-05-05T13:16:25.480 回答
3

为了避免正则表达式:

String toRemove = StringUtils.substringBetween(string, "<", ">");
String result = StringUtils.remove(string, "<" + toRemove + ">"); 

对于多个实例:

String[] allToRemove = StringUtils.substringsBetween(string, "<", ">");
String result = string;
for (String toRemove : allToRemove) {
  result = StringUtils.remove(result, "<" + toRemove + ">"); 
}

Apache StringUtils函数是 null-、empty- 和非匹配安全的

于 2019-07-19T20:38:58.990 回答
0

你应该使用

String stripped = html.replaceAll("<[^>]*>", "");
String stripped = html.replaceAll("<[^<>]*>", "");

where<[^>]*>匹配以 开头的子字符串<,然后是零个或多个字符以外>的字符(或除<and以外的字符,>如果您选择第二个版本),然后是一个>字符。

注意<.*?>

请参阅正则表达式演示

于 2021-10-30T21:15:13.230 回答