如何在 Android 中删除或转义 html 标签
PHP 有 strip_tags
函数,可以从字符串中去除 HTML 和 PHP 标签。
Android有没有办法转义html?
PHP has strip_tags
function which strips HTML and PHP tags from a string.
Does Android have a way to escape html?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
@sparkymat 链接到的答案中的解决方案通常需要正则表达式(这是一种容易出错的方法)或安装第三方库,例如 jsoup 或 jericho。 Android 设备上更好的解决方案就是使用 Html.fromHtml() 函数:
它使用 Android 内置的 Html 解析器来构建输入 html 的
Spanned
表示形式,而无需任何 html 标签。然后通过将输出转换回字符串来去除“Span”标记。正如此处所述,自 Android N 以来,Html.fromHtml 行为已发生变化。请参阅文档了解更多信息。
The solutions in the answer linked to by @sparkymat generally require either regex - which is an error-prone approach - or installing a third-party library such as jsoup or jericho. A better solution on Android devices is just to make use of the Html.fromHtml() function:
This uses Android's built in Html parser to build a
Spanned
representation of the input html without any html tags. The "Span" markup is then stripped by converting the output back into a string.As discussed here, Html.fromHtml behaviour has changed since Android N. See the documentation for more info.
很抱歉迟到的帖子,但我认为这可能对其他人有帮助,
仅删除 html 条
这样 html 标签将被字符串替换,但字符串的格式不会正确。因此我
这样做了,我首先用空格替换下一行并删除空格。同样,您可以删除其他人。
Sorry for the late post, but i think this might help for others,
To just remove the html strips
This way the html tag will be replaced with string, but the string willnot be formatted properly. Hence i did
This way i first replace with nextline with blankspace and removed blank space. Similarly you can remove others.
如果您的目标是 API 16 或更高版本,您也可以使用
Html.escapeHtml(String)
。如果还针对 API 16 以下,您可以通过调用
HtmlUtils.escapeHtml(String)
来使用下面的类,我只是从Html.escapeHtml(String)
的源中提取该类。我正在使用这个类,效果很好。
You can alternatively use
Html.escapeHtml(String)
if you are targeting API 16 or above.For also targeting below API 16, you can instead use the below class by calling
HtmlUtils.escapeHtml(String)
which i simply pulled from the source ofHtml.escapeHtml(String)
.I am using this class which works fine.
这是新方法的替代方案(API 16+):
This is for new method alternative (API 16+):
对于大型 html 字符串,Html.fromHtml 可能会非常慢。
以下是使用 jsoup 轻松快速地完成此操作的方法:
将此行添加到您的 gradle 文件中:
在此处检查最新的 jsoup 版本是什么:
https://jsoup.org/download
将此行添加到您的代码中:
查看此处的此链接以了解如何保留换行符:
如何使用 jsoup 将 html 转换为纯文本时是否保留换行符?
Html.fromHtml can be extremely slow for large html strings.
Here's how you can do it, easily and fast with jsoup:
Add this line to your gradle file:
Check what is the latest jsoup version here:
https://jsoup.org/download
Add this line to your code:
Check this link here to learn how to preserve line breaks:
How do I preserve line breaks when using jsoup to convert html to plain text?
使用 jsoup 这非常简单
This is dead simple with jsoup
由于尚未提及,以向后兼容的方式执行此操作的方法是使用 HtmlCompat 实用程序类,然后简单地调用(如果您不需要使用特定标志,则使用 0)
在幕后,它已经为您完成了所有必需的 api 检查,
因此对于
您将收到的 输入仅有的字符串“点击我!”作为输出。
As it has not been mentioned yet, the way to do this in a backwards compatible manner would be to use the HtmlCompat utility class, and simply call (with 0 if you require no specific flags to be used)
Under the hood it already does all the required api checks for you
So for for the input
you will receive only the string 'Click me!' as output.