【问题标题】:How to remove certain html tags from a String with replaceAll?如何使用replaceAll从字符串中删除某些html标签?
【发布时间】:2015-03-04 10:20:51
【问题描述】:

我有一个包含不同类型 html 标签的字符串。

我想删除所有<a></a> 标签。

我试过了:

string.replaceAll("<a>", "");
string.replaceAll("</a>", "");

但它不起作用。这些标签仍保留在字符串中。为什么?

【问题讨论】:

  • 字符串是不可变的;每个修改字符串的操作都会返回一个字符串。
  • 不要在 HTML / XML 上使用正则表达式。还向我们展示示例输入
  • 更好的是解析html而不是使用正则表达式删除标签。
  • 实际上对于替换,我会在这里使用正则表达式.. 并非地球上 HTML 文件中的每个操作都应该使用解析器。
  • 当您输入您的问题(以及您之前的 31 个问题)时,右侧有一个橙色的大如何格式化框。值得一读。还有一个完整的格式化辅助工具栏。还有一个包含大量有用信息的 [?] 按钮。以及文本框下方的预览区域。当你写下你的五个答案时,这些东西大部分都在那里。请花时间学习使用它们。

标签: java html parsing tags replaceall


【解决方案1】:

这些标签仍然保留在字符串中。为什么?

因为replaceAll 不直接修改字符串(它不能,字符串是不可变的),它返回修改后的字符串。所以:

string = string.replaceAll("<a>", "");
string = string.replaceAll("</a>", "")

Live Example

或者

string = string.replaceAll("<a>", "").replaceAll("</a>", "")

请注意,replaceAll 将定义正则表达式的字符串作为其第一个参数。 "&lt;a&gt;""&lt;/a&gt;" 都可以,但除非您需要使用正则表达式,否则请改用 replace(CharSequence,CharSequence)。如果使用replaceAll,请注意正则表达式中具有特殊含义的字符。

事实上,您可以使用一个replaceAll,利用您使用正则表达式这一事实:

string = string.replaceAll("</?a>", "");

/ 之后的? 使/ 成为可选的,因此将替换"&lt;a&gt;""&lt;/a&gt;"

Live Example

【讨论】:

  • 伟大而有用的答案。
【解决方案2】:

replaceAll("\", "\").replaceAll("\", "\");删除所有标签 html XD , 2 "\"

【讨论】:

  • 或replaceAll("\\]+)\\>", "\\ ").replaceAll("\\s+", "").trim ()
猜你喜欢
  • 2012-08-07
  • 2018-01-03
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
  • 2012-01-31
  • 2021-06-21
  • 1970-01-01
相关资源
最近更新 更多