gpt4 book ai didi

c# - 将 > 转换为 HTML 字符串中等效的 HTML 实体

转载 作者:太空狗 更新时间:2023-10-30 00:36:58 25 4
gpt4 key购买 nike

我试图在包含 HTML 标记的 HTML 字符串中将 > 字符的所有实例转换为其等效的 HTML 实体 >。我能得到的最远的解决方案是使用正则表达式。

这是我目前所拥有的:

        public static readonly Regex HtmlAngleBracketNotPartOfTag = new Regex("(?:<[^>]*(?:>|$))(>)", RegexOptions.Compiled | RegexOptions.Singleline);

我遇到的主要问题是隔离不属于 HTML 标记的单个 > 字符。我不想转换任何现有标签,因为我需要保留 HTML 以供呈现。如果我不转换 > 字符,我会得到格式错误的 HTML,这会导致浏览器出现呈现问题。

这是要解析的测试字符串的示例:

"Ok, now I've got the correct setting.<br/><br/>On 12/22/2008 3:45 PM, jproot@somedomain.com wrote:<br/><div class"quotedReply">> Ok, got it, hope the angle bracket quotes are there.<br/>><br/>> On 12/22/2008 3:45 PM, > sbartfast@somedomain.com wrote:<br/>>> Please someone, reply to this.<br/>>><br/>><br/></div>"

在上面的字符串中,作为 HTML 标签一部分的 > 字符都不应转换为 >。所以,这:

<div class"quotedReply">>

应该变成这样:

<div class"quotedReply">&gt;

另一个问题是上面的表达式使用了一个非捕获组,这很好,除了匹配在组 1 中。我不太确定如何只对组 1 进行替换并保留剩下的比赛。看起来 MatchEvaluator 并没有真正做到这一点,或者我现在无法想象它。

我怀疑我的正则表达式可以做一些爱。

有人有什么好主意吗?

最佳答案

你为什么要这样做? > 有什么危害?我遇到的大多数解析器都对 > 本身非常满意,而无需将其转义为实体。

此外,在将内容字符串与包含 HTML 标记的字符串连接之前,使用 HtmlUtilty.HtmlEncode 对内容字符串进行正确编码会更合适,因此如果这在您的控制之下,您应该考虑在那里处理它。

关于c# - 将 > 转换为 HTML 字符串中等效的 HTML 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/390205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com