是否有适用于 .Net 的 org.apache.commons.lang.StringEscapeUtils 实现?

3

我正在移植一个我编写的Java项目,它使用了Apache Commons LangStringEscapeUtils类(特别是

escapeXml
unescapeXml
escapeHtml
unescapeHtml

有没有 .Net 的等效方法?或者也许有一些完全合乎逻辑的 C# 代码可以实现同样的功能吗?

4个回答

4
使用System.Web处理HTML时,可以使用以下方法: 对于XML转义,您可以使用System.Security命名空间中的SecurityElement.Escape方法。然而,我不知道有没有相应的反转义方法。您可能需要编写自己的方法来替换编码后的XML,例如<&等等。转义方法的链接列出了其他项目。

我投票支持这个回答的一半(只需要XML部分),并且对你的快速响应感到惊讶! - Jason Sperske
我要说你做得很好。XML反转义实际上是我目前任务中最重要的事情,但知道在系统命名空间中没有可以查找的地方,至少比整天阅读MSDN文章要好。 - Jason Sperske
哦,是的,Mageed的回应速度非常快,比我快得多。 - o.k.w
1
@Jason:Luke的回复展示了一个方法的例子,这样就不用自己编写了。另外请注意,其他人建议使用HttpServerUtility而不是HttpUtility。编码/解码类似,但区别在于HttpServerUtility是在网站上下文中,并通过Server对象公开功能并在内部使用HttpUtility。然而,在该上下文之外,您可以直接使用HttpUtility。因此,这取决于您的项目类型和可用性。 - Ahmad Mageed
@Ahmad:HttpServerUtility 上的 HtmlEncode/HtmlDecode 方法是静态的,可以直接调用,不仅仅通过 ASP.NET 中公开的 Server 对象。然而,由于这些方法只是直接传递到等效的 HttpUtility 方法,因此更合理的做法是直接使用 HttpUtility - LukeH

3
public static class StringEscapeUtils
{
    public static string EscapeXml(string unescaped)
    {
        return SecurityElement.Escape(unescaped);
    }

    public static string UnescapeXml(string escaped)
    {
        return escaped.Replace("&lt;", "<")
                      .Replace("&gt;", ">")
                      .Replace("&quot;", "\"")
                      .Replace("&apos;", "'")
                      .Replace("&amp;", "&");
    }

    public static string EscapeHtml(string unescaped)
    {
        return HttpUtility.HtmlEncode(unescaped);
    }

    public static string UnescapeHtml(string escaped)
    {
        return HttpUtility.HtmlDecode(escaped);
    }
}

我喜欢将这些不同的函数封装到StringEscapeUtils类中的努力。这些回答在有用性方面不相上下。我会给它们投票,但我必须选择一个作为“答案”,所以我选择了第一个。您先生确实赢得了17.1K的声望。 - Jason Sperske

1

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接