gpt4 book ai didi

Android:替换 WebView 中的 HTML 标签

转载 作者:搜寻专家 更新时间:2023-11-01 09:15:10 24 4
gpt4 key购买 nike

我的 android 应用程序下载带有 HTML 标签格式的文章并将它们显示在 WebView 中。我遇到的问题是有些文章有自动生成的图表,这些图表很大而且不适合 webview。 (请注意,我不想使用水平滚动)。我的想法是保存每次出现的包含此类图表的“div”标签,然后将其替换为"<a href='unique_id_of_div_tag'>Show graph</a>"。关联。有这样的东西会显示链接而不是图表。当用户点击它时会打开带有图形的新 Activity 。(我会使用 WebViewClient 和 shouldOverrideUrlLoading 方法处理用户点击)

包含图形信息的“div”标签具有与以下类似的结构:

<div class="graph">
<div>Header</div>
<div>Graph body</div>
<div>Graph footer</div>
</div>

(我无法控制它)

总而言之,我希望能够保存 <div class="graph">...</div> 的内容并将其替换为 <a href="">...</a> .我怎样才能做到这一点?

谢谢,品牌

最佳答案

这可以通过使用以下方法来完成:

Pattern tags = Pattern.compile ("</?[^>]+>");
Matcher match = tags.matcher (yourContent); // here you specify the string you want to modify (HTML)
String result = match.replaceAll("");

通过这种方式,您可以删除所有标签,但将内容保留在 HTML 字符串中。

阅读更多关于模式和匹配器的信息 here .

编辑:

要仅从字符串中删除链接( anchor ),请编写以下内容而不是第一行:

Pattern tags = Pattern.compile ("</?[a]{1}[^>]+>");

您可以通过将正则表达式替换为另一个字符串来删除任意字符串。

编辑2:

我完全误解了你的问题。两次:)

您可以删除所有 <div class="graph">标签,通过做这样的事情:

    Pattern tags = Pattern.compile ("<div class=\"graph\">[^(</div>)]+</div>");

然后,将所有 [[DIV]] 占位符替换为您想要的任何内容。但是,如果您有一个带有图形的 div 并且其中包含一些内容,则此方法将不起作用。所以在那种情况下,我认为最好将所有内容拆分到 <div class=graph> 上然后检查每个元素内的每个 DIV,以检查其中是否有图形。

我不知道这是否可以单独使用正则表达式来完成,因此必须采用更乏味且更容易出错的方法。但是您确实想要一些非常具体的东西,所以有时您应该期待这样的东西 :)

关于Android:替换 WebView 中的 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5212021/

24 4 0