我有一个这样的字符列表:
白名单:“ABCDEFGHIJKLMNOPQRSTUVQXYZ&,;”()@$%-_+。
我想编写一个函数来编码字符串中除这些字符之外的所有字符。
如果您确实想要更改 的功能HttpUtility.HtmlEncode
,则需要创建自己的HttpEncoder
.
HttpEncoder 类-备注部分解释了如何设置您的网站以HttpEncoder
在HttpUtility
、HttpServerUtility
和HttpResponseHeader
.
编辑
回应“我可以修改 HttpUtility 中的白名单字符吗?”
不。在内部实现默认HttpEncoder
调用WebUtility.HtmlEncode
,而默认调用又调用WebUtility.IndexOfHtmlEncodingChars
. 此方法使用一组硬编码值,因此您无法修改白名单字符。您需要编写自己的HttpEncoder
课程。
老实说,我认为这是一个非常糟糕的主意,但只是为了挑战......
Public Function fnsHTMLEncodeExcept(pvsStringToEncode As String, pvsCharactersNotToEncode As String) As String
Dim voEncodedString As New Text.StringBuilder
For viPosition As Integer = 0 To (pvsStringToEncode.Length - 1)
Dim vsChar As String = Mid(pvsStringToEncode, viPosition, 1)
If InStr(pvsCharactersNotToEncode, vsChar) > 0 Then voEncodedString.Append(vsChar) Else voEncodedString.Append(HttpUtility.HtmlEncode(vsChar))
Next
Return voEncodedString.ToString
End Function
但是,我不知道您将如何对其进行 HtmlDecode ... 我不会问您为什么需要这种功能。